home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 5 / Apprentice-Release5.iso / Information / CSMP Digest / volume 3 / csmp-digest-v3-147 < prev    next >
Text File  |  1996-05-18  |  84KB  |  2,288 lines

  1. C.S.M.P. Digest             Sat, 18 May 96       Volume 3 : Issue 147
  2.  
  3. Today's Topics:
  4.  
  5.         CGrafPort vs GWorld
  6.         DSp Gamma Fading (was Re: PageFlipping on 68K)
  7.         Full Screen Scrolling
  8.         Getting Partition Info (as opposed to volume...)
  9.         Getting monitor's scan rate?
  10.         Is there a "bad" fileRefNum value?
  11.         Mac Tutorials Here!
  12.         Overlaying a PICT onto a background
  13.         Preventing Aliases from being automatically resolved?
  14.         Restricting PBCatSearch to a single directory
  15.         SetApplLimit
  16.         Time running out in year 2040
  17.         To sync to VBL or not to sync....
  18.         [Q] Clean way to know when a serial port is "stolen"
  19.  
  20.  
  21.  
  22. The Comp.Sys.Mac.Programmer Digest is moderated by Francois Pottier
  23. (pottier@clipper.ens.fr).
  24.  
  25. The digest is a collection of article threads from the internet
  26. newsgroups comp.sys.mac.programmer.help, csmp.tools, csmp.misc and
  27. csmp.games. It is designed for people who read news semi-regularly and
  28. want an archive of the discussions.  If you don't know what a
  29. newsgroup is, you probably don't have access to it. Ask your systems
  30. administrator(s) for details. If you don't have access to news, you
  31. may still be able to post messages to the group by using a mail server
  32. like anon.penet.fi (mail help@anon.penet.fi for more information).
  33.  
  34. Each issue of the digest contains one or more sets of articles (called
  35. threads), with each set corresponding to a 'discussion' of a particular
  36. subject.  The articles are not edited; all articles included in this digest
  37. are in their original posted form (as received by our news server at
  38. nef.ens.fr).  Article threads are not added to the digest until the last
  39. article added to the thread is at least two weeks old (this is to ensure that
  40. the thread is dead before adding it to the digest).  Article threads that
  41. consist of only one message are generally not included in the digest.
  42.  
  43. The digest is officially distributed by two means, by email and ftp.
  44.  
  45. If you want to receive the digest by mail, send email to listserv@ens.fr
  46. with no subject and one of the following commands as body:
  47.     help                        Sends you a summary of commands
  48.     subscribe csmp-digest Your Name    Adds you to the mailing list
  49.     signoff csmp-digest            Removes you from the list
  50. Once you have subscribed, you will automatically receive each new
  51. issue as it is created.
  52.  
  53. The official ftp info is ftp://ftp.dartmouth.edu/pub/csmp-digest.
  54. Questions related to the ftp site should be directed to
  55. scott.silver@dartmouth.edu.
  56.  
  57. -------------------------------------------------------
  58.  
  59. >From Andrew Edward White <andreww>
  60. Subject: CGrafPort vs GWorld
  61. Date: 2 May 1996 04:02:17 GMT
  62. Organization: School of CompSci & Eng, Uni Of NSW, Oz
  63.  
  64.  
  65. If all I want to do is simple blitting between off screen ports and a
  66. window (no fades, no palette animation, etc), is it better to use a GWorld
  67. or a CGrafPort?  And Why?
  68.  
  69. (Basically, is the extra memory overhead for a GWorld worth it, either in
  70. terms of speed or ease of coding?)
  71.  
  72. --
  73. Andrew White
  74. andreww@cse.unsw.edu.au
  75. URL: http://www.cse.unsw.edu.au/~andreww/
  76. "A complex problem is merely a simple hierarchy of simple problems"
  77.  
  78.  
  79. +++++++++++++++++++++++++++
  80.  
  81. >From Andrew Barry <ajbarry@ozemail.com.au>
  82. Date: Thu, 02 May 1996 16:11:19 +1100
  83. Organization: Connect.com.au P/L, Sydney, Australia
  84.  
  85. > If all I want to do is simple blitting between off screen ports and a
  86. > window (no fades, no palette animation, etc), is it better to use a GWorld
  87. > or a CGrafPort?  And Why?
  88. > (Basically, is the extra memory overhead for a GWorld worth it, either in
  89. > terms of speed or ease of coding?)
  90.  
  91. I'd say yes.
  92.  
  93. (a) Your code will be more compatible:
  94.   - it's a bit messy putting a CGrafPort together, and this won't
  95.     be allowed under Copland and later (though you could possibly
  96.     do it through accessor functions)
  97.   - if the screen colours/depth gets changed on you, then your stuff
  98.     will still display properly - instead of displaying crap.
  99.     (though you will take a speed hit).
  100. (b) Your code could be faster:
  101.   - accelerated video cards can have GWorld memory - which means
  102.     that blitting from the GWorld to the screen can be faster,
  103.     as well as the accelerator being able to operate on the
  104.     offscreen buffer - though it's difficult to quantify the
  105.     speedup - particularly if you directly manipulate the pixels
  106.     yourself, since they will be slower. Take note of the flag to
  107.     force the GWorld to be in local memory (useLocalMem?).
  108.  
  109. Andrew Barry
  110.  
  111. +++++++++++++++++++++++++++
  112.  
  113. >From ctate@world.std.com (Christopher L Tate)
  114. Date: Thu, 2 May 1996 13:49:09 GMT
  115. Organization: The World Public Access UNIX, Brookline, MA
  116.  
  117. Andrew Edward White (andreww) wrote:
  118.  
  119. : If all I want to do is simple blitting between off screen ports and a
  120. : window (no fades, no palette animation, etc), is it better to use a GWorld
  121. : or a CGrafPort?  And Why?
  122.  
  123. : (Basically, is the extra memory overhead for a GWorld worth it, either in
  124. : terms of speed or ease of coding?)
  125.  
  126. There is almost never a good reason to roll your own offscreen graphics
  127. contexts instead of using GWorlds, IMHO.  The GWorld package supports a
  128. whole lot of bells and whistles (such as ensuring proper alignment with
  129. a monitor's pixel map, and support for accelerated video cards) that are
  130. big performance wins, and which can be a whole lot of hassle to get to
  131. work right on your own.
  132.  
  133. If you need special manipulation, e.g. for specialized applications such
  134. as games, then you might consider handling the pixel data yourself.  But
  135. it's a *lot* more work than using GWorlds, and most applications don't
  136. need that litte bit of extra performance.
  137.  
  138. -- 
  139. Christopher Tate <*> ctate@world.std.com <*> http://world.std.com/~ctate/
  140.                   "What's in the briefcase?"   "Kosh."
  141.  
  142. ---------------------------
  143.  
  144. >From farrier@apple.com (Cary Farrier)
  145. Subject: DSp Gamma Fading (was Re: PageFlipping on 68K)
  146. Date: Sun, 05 May 1996 09:49:38 -0700
  147. Organization: Apple Computer, Inc.
  148.  
  149. In article <318BBEB2.76FC@worldnet.att.net>, Dave Howell > That's great; I
  150. didn't know that. Is there some documentation about that 
  151. > or some way to tell which have that capability and which don't? Can you 
  152. > post a list?
  153.  
  154. I'll start working on a list.
  155.  
  156. > Cary, on another note, will DrawSprocket support gamma fading in a nice 
  157. > high-level way so that third-party developers no longer have to make 
  158. > direct video driver calls?
  159.  
  160. You bet, it's already there.  There are three calls:
  161.  
  162. DSpContext_FadeGammaOut()
  163.  
  164.    Auto-fades the gamma to zero intensity over 1 second.  The user can
  165.    abort the fade with a key press or mouse button.
  166.  
  167. DSpContext_FadeGammaIn()
  168.  
  169.    Reverse of FadeGammaOut()
  170.  
  171. DSpContext_FadeGamma()
  172.  
  173.    Allows you to manually set the current intensity level (with respect
  174.    to normal), so you can manually fade the gamma in your own fashion.
  175.  
  176. All of the calls can work on a single monitor, or on all monitors
  177. simultaneously.
  178.  
  179. All of the calls allow you to specify a non-black RGBColor as the
  180. "zero intensity" color, so instead of fading to black you can fade to
  181. white (or any other color).
  182.  
  183. In the manual fade:
  184.  
  185. If you specify an RGBColor to fade to, then you can specify intensity
  186. levels < 0 && > -100 to fade to black from the RGBColor, so you can
  187. fade to red from your game, then from red to black.
  188.  
  189. You can also set the gamma to > 100%, and the colors will converge
  190. on white (sorta an "overdrive").
  191.  
  192. -> Cary
  193.  
  194. -- 
  195. - -------------------------------------------------------------------
  196. Cary Farrier, aka Mr. DrawSprocket
  197. Software Engineer, Apple Game Technology Group
  198. farrier@apple.com
  199.  
  200.  
  201. ---------------------------
  202.  
  203. >From thunk@interport.net
  204. Subject: Full Screen Scrolling
  205. Date: 17 Apr 1996 19:55:31 GMT
  206. Organization: Interport Communications Corp.
  207.  
  208. Okay here goes...
  209.    How difficult would it be to write an arcade style game that uses full
  210. screen, 640*480*8bit, scrolling backgrounds? I dont think I've ever seen
  211. such a game for the mac.  Obviously copy-bits can't handle that.  I'm
  212. working on a custom blitter, but is it even possible without learning
  213. assembler?  I'm a computer art student and fairly new to programing. I
  214. want to do this as part of my thesis but I am afraid I might be getting in
  215. over my head. Whaddayathink? Opinions and advice are greatly appreciated.
  216.  
  217.                                                    Z.Brill
  218.  
  219. +++++++++++++++++++++++++++
  220.  
  221. >From "Andrew C. Plotkin" <erkyrath+@CMU.EDU>
  222. Date: Wed, 17 Apr 1996 18:00:31 -0400
  223. Organization: Carnegie Mellon, Pittsburgh, PA
  224.  
  225. thunk@interport.net writes:
  226. >    How difficult would it be to write an arcade style game that uses full
  227. > screen, 640*480*8bit, scrolling backgrounds? I dont think I've ever seen
  228. > such a game for the mac. 
  229.  
  230. There are some. I wrote one. ("Icebreaker". Commercial, not
  231. downloadable. There may still be a demo around somewhere.) 
  232.  
  233. > Obviously copy-bits can't handle that. 
  234.  
  235. You'd be surprised. Icebreaker uses custom blitters for sprites, and
  236. then uses CopyBits to get it from the GWorld to the screen. It got 15
  237. or more fps on Quadras, 18 or more on PowerMacs. Kind of ugly on my
  238. home Mac (Centris 610, a 68040LC chip) though. 
  239.  
  240. > I'm
  241. > working on a custom blitter, but is it even possible without learning
  242. > assembler?
  243.  
  244. The custom blitters were not written in assembly, but I did write the
  245. code with careful consideration to what kind of assembly it would
  246. compile into.
  247.  
  248. At any rate, there are several sprite and blitting packages orbiting
  249. the Mac shareware community. Look on Info-Mac in the development
  250. directory. 
  251.  
  252. --Z
  253.  
  254. "And Aholibamah bare Jeush, and Jaalam, and Korah: these were the borogoves..."
  255.  
  256.  
  257. +++++++++++++++++++++++++++
  258.  
  259. >From vulpine@zikzak.net (Trevor Powell)
  260. Date: Thu, 18 Apr 1996 11:03:32 +1000
  261. Organization: Vulpine Software
  262.  
  263. In article <thunk-1704961611120001@thunk.port.net>, thunk@interport.net wrote:
  264.  
  265. > Okay here goes...
  266. >    How difficult would it be to write an arcade style game that uses full
  267. > screen, 640*480*8bit, scrolling backgrounds? I dont think I've ever seen
  268. > such a game for the mac.  Obviously copy-bits can't handle that.  I'm
  269. > working on a custom blitter, but is it even possible without learning
  270. > assembler?  I'm a computer art student and fairly new to programing. I
  271. > want to do this as part of my thesis but I am afraid I might be getting in
  272. > over my head. Whaddayathink? Opinions and advice are greatly appreciated.
  273.  
  274. Answer.  "Pretty hard".  I've never even seen such a game for the PC.
  275.  
  276. Now, having said that, I've seen a demo by Andrew Welch (answers: 'no',
  277. 'no', and 'not yet' respectively, by the way, for those who were curious. 
  278. So eager API-authors, wives-to-be, and sanitarium owners know who to
  279. target.  ;) ) which did interactive 8-bit graphic scrolling, with an
  280. overlay of 16 partially overlapping Maelstrom ships, in a window of about
  281. 400x400 pixels.  Maybe a bit bigger than that.  (The background image
  282. scrolled as you moved the mouse, with the rotating Maelstrom ships drawn
  283. above the background)
  284.  
  285. It ran smooth as silk on my 68040.. and quite acceptably on my old 68020
  286. vanilla Mac II...  Who knows -- maybe with a PPC Andrew'll figure out a
  287. good way to do real full screen scrolling..
  288.  
  289. +++++++++++++++++++++++++++
  290.  
  291. >From zzkbergm@dingo.uq.edu.au (Christoph Bergmann)
  292. Date: Thu, 18 Apr 1996 10:32:45 +1000
  293. Organization: University of Queensland
  294.  
  295. In article <thunk-1704961611120001@thunk.port.net>, thunk@interport.net wrote:
  296.  
  297. > Okay here goes...
  298. >    How difficult would it be to write an arcade style game that uses full
  299. > screen, 640*480*8bit, scrolling backgrounds? I dont think I've ever seen
  300. > such a game for the mac.  Obviously copy-bits can't handle that.  I'm
  301. > working on a custom blitter, but is it even possible without learning
  302. > assembler?  I'm a computer art student and fairly new to programing. I
  303. > want to do this as part of my thesis but I am afraid I might be getting in
  304. > over my head. Whaddayathink? Opinions and advice are greatly appreciated.
  305. >                                                    Z.Brill
  306.  
  307. hard? no. slow? quite possibly. on a mid-high end powermac, something like
  308. this should be possible. on a low-end, it may be possible, but would
  309. probably be a little slow. on an 040, forget it ;)
  310.  
  311. use copybits for any full copies (assuming you use an offscreen->screen
  312. blit) and write your own blitters for sprites etc.
  313.  
  314. heck, if 320x200x16 can be done on an 030/33, a powermac shouldnt have
  315. tooo much trouble doing it at higher qual..
  316.  
  317.  
  318. chris
  319.  
  320. +++++++++++++++++++++++++++
  321.  
  322. >From squires@crl.com (Scott Squires)
  323. Date: Wed, 17 Apr 1996 17:40:33 -0800
  324. Organization: Puffin Designs
  325.  
  326. In article <thunk-1704961611120001@thunk.port.net>,
  327. thunk@interport.net wrote:
  328.  
  329. >Okay here goes...
  330. >   How difficult would it be to write an arcade style game that uses full
  331. >screen, 640*480*8bit, scrolling backgrounds? I dont think I've ever seen
  332. >such a game for the mac.  Obviously copy-bits can't handle that.  I'm
  333. >working on a custom blitter, but is it even possible without learning
  334. >assembler?  I'm a computer art student and fairly new to programing. I
  335. >want to do this as part of my thesis but I am afraid I might be getting in
  336. >over my head. Whaddayathink? Opinions and advice are greatly appreciated.
  337.  
  338.  
  339. Check out 'CopyBits ColorKarma', this is Apple demo code from Develop
  340. magazine Vol 17.  It should be in the Apple Developer's web site.
  341. Unfortunately it hasn't been updated to the new Universal Headers.
  342.  
  343. -scott
  344.  
  345.  
  346. Scott Squires               "Insert funny stuff here"
  347. squires@crl.com
  348. ScottSquir@aol.com
  349.  
  350.  
  351.  
  352. +++++++++++++++++++++++++++
  353.  
  354. >From jgrass@cs.umass.edu (Joshua Grass)
  355. Date: 18 Apr 1996 17:35:39 GMT
  356. Organization: University of Massachussetts Computer Science Department
  357.  
  358. In article <thunk-1704961611120001@thunk.port.net>,
  359.  <thunk@interport.net> wrote:
  360. >Okay here goes...
  361. >   How difficult would it be to write an arcade style game that uses full
  362. >screen, 640*480*8bit, scrolling backgrounds? I dont think I've ever seen
  363. >such a game for the mac.  Obviously copy-bits can't handle that.  I'm
  364. >working on a custom blitter, but is it even possible without learning
  365. >assembler?  I'm a computer art student and fairly new to programing. I
  366. >want to do this as part of my thesis but I am afraid I might be getting in
  367. >over my head. Whaddayathink? Opinions and advice are greatly appreciated.
  368. >
  369. >                                                   Z.Brill
  370.  
  371. I've written a program that does the following:
  372.  
  373. Draws around 40 sprites to an offscreen image: tiling the floor, and
  374. drawing characters.  Uses a custom blitter, for 8-bit transparency
  375. coloring, but also keeps track of the start and end for each row, so
  376. it skips a lot of empty space on the edges(most sprites have no empty
  377. middles, so the real trick is to just keep track of the start and end
  378. positions of the bytes to draw).
  379.  
  380. Used copybits to slam the offscreen to the main screen.
  381.  
  382. Also did some other drawing(status bars, etc...).
  383.  
  384. Now on a 6100/66 PPC I got a frame rate of ~15fps for an area 320x460
  385. at 256 colors.  You might be able to improve the blitter a little by
  386. encoding the sprites to take advantage of 8 byte draws, but the
  387. checking may take nearly as much time as you save.  I'll have to think
  388. about how to encode on the fly(I don't like the pre-encoding idea put
  389. forth in Tricks...).
  390.  
  391. Anyway, you can look at my sprite drawing and encoding code at the
  392. following web address:
  393.  
  394. http://anytime.cs.umass.edu/jgrass-bin/question?question00046
  395.  
  396. Let me also plug my HIT on mac-programming at the address:
  397.  
  398. http://anytime.cs.umass.edu/~jgrass/MGPW/index.html
  399.  
  400. It's a web system for asking and answering questions about mac game
  401. programming, and keeping a history of the responses.
  402.  
  403.                         Joshua
  404.  
  405. -- 
  406. If you want to know who you are,        | jgrass@cs.umass.edu
  407. it's important to know who you've been. | http://anytime.cs.umass.edu/~jgrass
  408.  
  409.  
  410.  
  411. +++++++++++++++++++++++++++
  412.  
  413. >From Jensen@digitalpopcorn.com (Vern Jensen)
  414. Date: 18 Apr 1996 02:04:24 GMT
  415. Organization: NETCOM Network Operations
  416.  
  417. In article <thunk-1704961611120001@thunk.port.net>, thunk@interport.net wrote:
  418.  
  419. > Okay here goes...
  420. >    How difficult would it be to write an arcade style game that uses full
  421. > screen, 640*480*8bit, scrolling backgrounds? I dont think I've ever seen
  422. > such a game for the mac.  Obviously copy-bits can't handle that.  I'm
  423. > working on a custom blitter, but is it even possible without learning
  424. > assembler?  I'm a computer art student and fairly new to programing. I
  425. > want to do this as part of my thesis but I am afraid I might be getting in
  426. > over my head. Whaddayathink? Opinions and advice are greatly appreciated.
  427. >                                                    Z.Brill
  428.  
  429.  
  430. I'd suggest getting SpriteWorld 2.0, which I'm currently working on along
  431. with Karl Bunker. A beta should be ready very soon. Anyway, SpriteWorld
  432. 2.0 sports some brand new scrolling and tiling routines, that are as fast
  433. as anything you'll find (and usually faster).
  434.  
  435. In a 640*480 window in 256 colors, I get 12 fps when interlacing on an LC
  436. II. This may seem slow, but remember that this is an LC II! On 68040 Macs
  437. it goes much faster, like around 30fps or more. And of course on the
  438. PowerMac, it goes really fast. On a Power Mac 8100, in 256 colors with a
  439. 640x480 window, SpriteWorld gets the following frame rates:
  440.  
  441.     68K (running under emulation):
  442.         Not interlaced:    43
  443.         Interlaced:        52
  444.  
  445.     PPC (native):
  446.         Not interlaced:    67
  447.         Interlaced:        136
  448.  
  449. And of course, if you use a smaller window, like 512x384, then things go
  450. *much* faster.
  451.  
  452. Anyone interested in beta testing SpriteWorld 2.0 can write to me and tell
  453. me their name, type of Mac, and the compiler they use. The beta will be
  454. emailed to everyone on the list as soon as it is ready, which will
  455. hopefully be in about a week.
  456.  
  457. -Vern
  458.  
  459.  
  460. +++++++++++++++++++++++++++
  461.  
  462. >From dwareing@adelaide.on.net (David Wareing)
  463. Date: Thu, 18 Apr 1996 13:04:45 +0930
  464. Organization: Weyland Yutani
  465.  
  466. In article <thunk-1704961611120001@thunk.port.net>, thunk@interport.net wrote:
  467.  
  468. >Okay here goes...
  469. >   How difficult would it be to write an arcade style game that uses full
  470. >screen, 640*480*8bit, scrolling backgrounds? I dont think I've ever seen
  471. >such a game for the mac.  Obviously copy-bits can't handle that.  I'm
  472. >working on a custom blitter, but is it even possible without learning
  473. >assembler?  I'm a computer art student and fairly new to programing. I
  474. >want to do this as part of my thesis but I am afraid I might be getting in
  475. >over my head. Whaddayathink? Opinions and advice are greatly appreciated.
  476.  
  477. 640x480x8 @ 30FPS can certainly be done on a PowerMac but remember
  478. that CopyBits is only one part of the equation. In many fullscreen 
  479. animation cases you might only use CopyBits once for the final blit to 
  480. screen. 
  481.  
  482. Get your game working first with CopyBits and then work on improving that 
  483. final blit if necessary.  And don't get your hopes up too high. Are you 
  484. prepared to spend 50% of your effort just to get a 5% speed increase,
  485. if that?
  486.  
  487. There are plenty of other aspects of a scrolling game which can have
  488. a large impact upon speed, including your background scrolling/updating
  489. mechanisms, sprite composition, sound, music, game AI & logic,
  490. collision detection, and so on.
  491.  
  492. I'd venture to say that the mechanism for your background scrolling
  493. and updating is much more important than the issue of CopyBits vs a
  494. custom blitter. For a Xevious/Raiden type of top-down scroller, for
  495. instance, your choice of scrolling/updating algorithm can instantly
  496. double the speed of your game, or halve it...
  497.  
  498. -- 
  499. David Wareing                                 dwareing@adelaide.on.net
  500. Belair, South Australia           http://www.AmbrosiaSW.com/~dwareing/
  501. Macintosh & BeBox Games Development
  502.  
  503.  
  504.  
  505. +++++++++++++++++++++++++++
  506.  
  507. >From Mikael Bouillot <mikael@resus.univ-mrs.fr>
  508. Date: 19 Apr 1996 11:38:17 GMT
  509. Organization: Robins AFB, GA
  510.  
  511. In c.s.m.p.games, thunk@interport.net wrote:
  512.  
  513. > How difficult would it be to write an arcade style game that uses full
  514. > screen, 640*480*8bit, scrolling backgrounds? I dont think I've ever seen
  515. > such a game for the mac.  Obviously copy-bits can't handle that.  I'm
  516. > working on a custom blitter, but is it even possible without learning
  517. > assembler?  I'm a computer art student and fairly new to programing. I
  518. > want to do this as part of my thesis but I am afraid I might be getting in
  519. > over my head. Whaddayathink? Opinions and advice are greatly appreciated.
  520.  
  521.  I've done a tiny little thing that does a 640x480x8bit scrolling based on
  522. tiles, and runs at 67 fps (sync'd to the screen VBL) on my 7200/75. It's 100%
  523. pure C, with no assembly in it and it's pretty ugly to read, because it was
  524. just done to show my Amiga and PC friends that the Mac was capable of it, but
  525. at least (and unlike many of my progs) it works.
  526.  
  527.  If I had a 64 bits data path to my VRAM (which I would get with 2 Mb, if I
  528. understood well), it would even do 640x480x16bits at 67 fps, but right now, it
  529. only fills 90% of the screen with 16bits tiles :..-(
  530.  
  531.  I'll post the heart of my app when I come back.
  532.  
  533.  Mikael Bouillot
  534.  
  535.  mikael@resus.univ-mrs.fr
  536.  
  537.  
  538. +++++++++++++++++++++++++++
  539.  
  540. >From demos@xmission.com (Dmitry Boldyrev)
  541. Date: Thu, 18 Apr 1996 11:31:38 -0600
  542. Organization: Xenix Demo Group
  543.  
  544. In article <Jensen-1704961916420001@ppp-01.pop.com>,
  545. Jensen@digitalpopcorn.com (Vern Jensen) wrote:
  546.  
  547. Wish only Apple computers could do true VBL synching. Life would be a lot
  548. simplier for game developers.
  549.  
  550. Ugh
  551.  
  552. Demos
  553.  
  554. -- 
  555. Demos
  556.  
  557. +++++++++++++++++++++++++++
  558.  
  559. >From Omeed Fanaian <fanaian@bnr.ca>
  560. Date: Fri, 19 Apr 1996 13:50:26 -0500
  561. Organization: Bell Northern Research
  562.  
  563. Vern Jensen wrote:
  564.  
  565. > I'd suggest getting SpriteWorld 2.0, which I'm currently working on along
  566. > with Karl Bunker. A beta should be ready very soon. Anyway, SpriteWorld
  567. > 2.0 sports some brand new scrolling and tiling routines, that are as fast
  568. > as anything you'll find (and usually faster).
  569.  
  570. Whatever happened to Tony Myles? Wasn't he the one that was working on that?
  571.  
  572. O.
  573.  
  574. +++++++++++++++++++++++++++
  575.  
  576. >From jmunkki@gamma.hut.fi (Juri Munkki)
  577. Date: 19 Apr 1996 22:36:37 GMT
  578. Organization: Helsinki University of Technology
  579.  
  580. In article <demos-1804961131380001@chem-52.chem.utah.edu> demos@xmission.com (Dmitry Boldyrev) writes:
  581. >Wish only Apple computers could do true VBL synching. Life would be a lot
  582. >simplier for game developers.
  583.  
  584. Exsqueeze me???
  585.  
  586. I think the Macintosh is one of the few computers there that has built-in
  587. support for synching to multiple connected screens.
  588.  
  589. -- 
  590. Juri Munkki jmunkki@iki.fi        Life is easy when polygons are cheap.
  591. http://www.iki.fi/jmunkki           Windsurfing: Faster than the wind.
  592.  
  593.  
  594. +++++++++++++++++++++++++++
  595.  
  596. >From alexr@bungie.com (Alex Rosenberg)
  597. Date: Sat, 20 Apr 1996 20:23:05 -0500
  598. Organization: Hackers Anonymous
  599.  
  600. In article <thunk-1704961611120001@thunk.port.net>, thunk@interport.net wrote:
  601.  
  602. >   How difficult would it be to write an arcade style game that uses full
  603. >screen, 640*480*8bit, scrolling backgrounds? I dont think I've ever seen
  604. >such a game for the mac.  Obviously copy-bits can't handle that.
  605.  
  606. Power Pete scrolls most of a 640x480 screen just fine. I helped Brian
  607. tweak that at the first Apple Game Kitchen.
  608.  
  609. - ----------------------------------------------------
  610. |  Alexander M. Rosenberg   <mailto:alexr@bungie.com>|
  611. |  Bungie Software          <http://www.bungie.com>  |
  612. |  Nobody cares what I say.                          |
  613.  
  614. +++++++++++++++++++++++++++
  615.  
  616. >From Dave Howell <dshowell@postoffice.worldnet.att.net>
  617. Date: Wed, 24 Apr 1996 02:23:22 -0700
  618. Organization: Pablo Media
  619.  
  620. thunk@interport.net wrote:
  621. >How difficult would it be to write an arcade style game that uses full
  622. >screen, 640*480*8bit, scrolling backgrounds?
  623.  
  624. On what machines? A Mac LC? Very difficult. 
  625.  
  626. >I dont think I've ever seen
  627. >such a game for the mac.  Obviously copy-bits can't handle that.
  628.  
  629. You'd be surprised. I've worked on projects where we thought we could do 
  630. a faster blit than CopyBits could, and it's quite difficult. CopyBits is 
  631. pretty well optimized if you call it just right. It's smart enough to 
  632. use unrolled loops of MOVE16 instructions on an 040 whenever possible, 
  633. and it is plenty fast on the PowerPC. And if you are blitting from a 
  634. QuickDraw accelerated video card onto that card's display buffer, you 
  635. don't want to use your code.
  636.  
  637. No, use CopyBits. You just have to make sure that when you call 
  638. CopyBits, everything is set up so that it doesn't have to remap palettes 
  639. or shift longwords or anything like that. If you really do need to write 
  640. your own blitter, make sure you let the user opt to use CopyBits just in 
  641. case your blitter is incompatible with his video card, or ends up being 
  642. slower than CopyBits on his configuration.
  643.  
  644. >I'm
  645. >working on a custom blitter, but is it even possible without learning
  646. >assembler?
  647.  
  648. It would be very difficult to write a better blitter than CopyBits in C.
  649.  
  650. >I'm a computer art student and fairly new to programing. I
  651. >want to do this as part of my thesis but I am afraid I might be getting
  652. >in over my head. Whaddayathink? Opinions and advice are greatly
  653. >appreciated.
  654. >                                                    Z.Brill
  655.  
  656. My vote sez, use your own code up until the point where it's time to 
  657. blit to the screen. Then use CopyBits for that last blit.
  658.  
  659. Dave Howell
  660. Pablo Media
  661.  
  662. +++++++++++++++++++++++++++
  663.  
  664. >From Dave Howell <dshowell@postoffice.worldnet.att.net>
  665. Date: Wed, 24 Apr 1996 02:25:21 -0700
  666. Organization: Pablo Media
  667.  
  668. thunk@interport.net wrote:
  669. >How difficult would it be to write an arcade style game that uses full
  670. >screen, 640*480*8bit, scrolling backgrounds?
  671.  
  672. On what machines? A Mac LC? Very difficult. 
  673.  
  674. >I dont think I've ever seen
  675. >such a game for the mac.  Obviously copy-bits can't handle that.
  676.  
  677. You'd be surprised. I've worked on projects where we thought we could do a 
  678. faster blit than CopyBits could, and it's quite difficult. CopyBits is 
  679. pretty well optimized if you call it just right. It's smart enough to use 
  680. unrolled loops of MOVE16 instructions on an 040 whenever possible, and it is 
  681. plenty fast on the PowerPC. And if you are blitting from a QuickDraw 
  682. accelerated video card onto that card's display buffer, you don't want to 
  683. use your code.
  684.  
  685. No, use CopyBits. You just have to make sure that when you call CopyBits, 
  686. everything is set up so that it doesn't have to remap palettes or shift 
  687. longwords or anything like that. If you really do need to write your own 
  688. blitter, make sure you let the user opt to use CopyBits just in case your 
  689. blitter is incompatible with his video card, or ends up being slower than 
  690. CopyBits on his configuration.
  691.  
  692. >I'm
  693. >working on a custom blitter, but is it even possible without learning
  694. >assembler?
  695.  
  696. It would be very difficult to write a better blitter than CopyBits in C.
  697.  
  698. >I'm a computer art student and fairly new to programing. I
  699. >want to do this as part of my thesis but I am afraid I might be getting
  700. >in over my head. Whaddayathink? Opinions and advice are greatly
  701. >appreciated.
  702. >                                                    Z.Brill
  703.  
  704. My vote sez, use your own code up until the point where it's time to blit to 
  705. the screen. Then use CopyBits for that last blit.
  706.  
  707. Dave Howell
  708. Pablo Media
  709.  
  710. +++++++++++++++++++++++++++
  711.  
  712. >From elliott@mpi-muelheim.mpg.de (Mark Elliott)
  713. Date: Thu, 25 Apr 1996 14:11:30 +0200
  714. Organization: Max-Planck-Institut f. Kohlenforsch. Muelheim
  715.  
  716. In article <317DF30A.32DC@postoffice.worldnet.att.net>, Dave Howell
  717. <dshowell@postoffice.worldnet.att.net> wrote:
  718.  
  719.  
  720. > It would be very difficult to write a better blitter than CopyBits in C.
  721.  
  722. Sorry Dave, but that is simply not true. I have a blitter which for 20 x
  723. 20 and 40 x 40 rects outperforms CopyBits by a long way (on 680x0 macs - I
  724. still use the C version on powermacs, since it is safe and fast. I don't
  725. know how well it would fare against CopyBits in this case). Although it is
  726. now written in assembler, I first wrote it in C and it was still faster
  727. than CopyBits - codewarrior optimised the code pretty well. I actually
  728. only got a couple of % gain by coding in assembler - trust your compiler !
  729.  
  730. Mark
  731.  
  732. - ------------------------------------------------------------------
  733. Mark C Elliott                           elliott@mpi-muelheim.mpg.de
  734. Max-Planck-Institut                      voice: (+49) 208 306 2429
  735. Fuer Kohlenforschung
  736. Muelheim, Germany
  737. - ------------------------------------------------------------------
  738.  
  739.  
  740. +++++++++++++++++++++++++++
  741.  
  742. >From Dave Howell <dshowell@postoffice.worldnet.att.net>
  743. Date: Thu, 25 Apr 1996 22:23:30 -0700
  744. Organization: Pablo Media
  745.  
  746. Mark Elliott wrote:
  747. > > It would be very difficult to write a better blitter than CopyBits
  748. > > in C.
  749. > Sorry Dave, but that is simply not true. I have a blitter which for
  750. > 20 x 20 and 40 x 40 rects outperforms CopyBits by a long way (on
  751. > 680x0 macs - I still use the C version on powermacs, since it is
  752. > safe and fast. I don't know how well it would fare against CopyBits
  753. > in this case). Although it is now written in assembler, I first
  754. > wrote it in C and it was still faster than CopyBits - codewarrior
  755. > optimised the code pretty well. I actually only got a couple of %
  756. > gain by coding in assembler - trust your compiler !
  757. > Mark
  758.  
  759. Well, I believe that you really did write that function, and that it 
  760. really was faster on your machine. You had a very special-case 
  761. scenario, and a very special-case benchmark. CopyBits is slow for very 
  762. small rectangles, such as those you were testing. Because CopyBits 
  763. handles so many special cases (blitting to a window spanning multiple 
  764. graphics devices, special modes like xor and matting, masking, etc), 
  765. the overhead becomes non-negligible at small resolutions. The trouble is 
  766. writing a general-purpose blitter that is faster on all machines. Did 
  767. you try running yours on a machine with a graphics accelerator card?
  768.  
  769. That all being said, in some games and QuickTime codecs we did end up 
  770. shipping our own blitters for special cases. One case where CopyBits is 
  771. horribly slow and we were nice and fast is the case of pixel-doubling a 
  772. 320x240 8-bpp bitmap to a screen at 640x480. We were able to read a 
  773. 16-bit word, use 68K bit-field extract instructions to duplicate it in a 
  774. 32-bit register, and write it into two destination lines at once. In the 
  775. PowerPC version, we just used C because it was plenty fast enough for 
  776. our animations.
  777.  
  778. Yes, you can write faster blitters than CopyBits for special purposes. 
  779. And games are generally special purpose. You can even write them in C, 
  780. but you still need to know assembly well enough to examine the compiled 
  781. code and look for redundancy and inefficiency.
  782.  
  783. Dave Howell
  784. Pablo Media
  785.  
  786. +++++++++++++++++++++++++++
  787.  
  788. >From mhzujo@student.math.hr (Marko Horvatic)
  789. Date: 26 Apr 1996 10:56:36 GMT
  790. Organization: University of Zagreb, Dept. of Mathematics
  791.  
  792. Omeed Fanaian (fanaian@bnr.ca) wrote:
  793. : Vern Jensen wrote:
  794.  
  795. : > I'd suggest getting SpriteWorld 2.0, which I'm currently working on along
  796. : > with Karl Bunker. A beta should be ready very soon. Anyway, SpriteWorld
  797. : > 2.0 sports some brand new scrolling and tiling routines, that are as fast
  798. : > as anything you'll find (and usually faster).
  799.  
  800.  Is SW 2.0 going to be PPC only or is there going to be a 680x0 option?
  801.  
  802.  Are you going to make any Pascal libraries or only C ones?
  803.  p
  804.  Is it going to be CW or Symantect C/C++ 8.0 lybraries?
  805.  
  806.  Thanks
  807.  M.
  808. --
  809. ******************************************************************************
  810.     Marko Horvatic
  811.     E-mail  mhzujo@student.math.hr
  812.     WWW     http://student.math.hr/~mhzujo
  813. ******************************************************************************
  814.  
  815. +++++++++++++++++++++++++++
  816.  
  817. >From karlbunker@aol.com (KarlBunker)
  818. Date: 28 Apr 1996 10:46:32 -0400
  819. Organization: America Online, Inc. (1-800-827-6364)
  820.  
  821. Marko Horvatic wrote:
  822.  
  823. > Is SpriteWorld 2.0 going to be PPC only or is there going to be a 680x0
  824. option?
  825. > Is it going to be CW or Symantec C/C++ 8.0 libraries?
  826.  
  827. We will be distributing the source and libraries as well. The source will
  828. be PPC and 68K compilable, with some conditional-compiling optimizations
  829. for each type of compile. The libraries will (most likely) be available
  830. for the following environments:
  831. 68K Symantec C/C++
  832. 68K CW C/C++
  833. PPC CW C/C++
  834.  
  835.  > Are you going to make any Pascal libraries or only C ones?
  836.  
  837. The source is C; it may be possible to compile libraries usable from
  838. Pascal, but I don't know.
  839.  
  840. Karl Bunker
  841. KarlBunker@aol.com
  842. http://users.aol.com/karlbunker/
  843.  
  844.  
  845. +++++++++++++++++++++++++++
  846.  
  847. >From "Ian K. Erickson" <ierickson@ewu.edu>
  848. Date: Wed, 1 May 1996 22:47:14 PST
  849. Organization: A poorly-installed InterNetNews site
  850.  
  851. On 28 Apr 1996, KarlBunker wrote:
  852. >  > Are you going to make any Pascal libraries or only C ones?
  853. > The source is C; it may be possible to compile libraries usable from
  854. > Pascal, but I don't know.
  855.  
  856. I know THINK pascal can use THINK C libraries, but I don't know about CW.
  857.  
  858.    o   \ o /   __o          __|     \/      |__        o__   \ o /  o
  859.   /|\    |      /|   __\o      \o    |    o/    o/__   |\      |   /|\
  860.   / \   / \    |\  /)  |       ( \  /o\  / )     |  (\  / \   / \  / \
  861. =================http://www.labs.ewu.edu/Cons/ierickson/ierickson.htm===========
  862. Ian K. Erickson       "The Latin word for 'Close your eyes and open your mouth'
  863. ierickson@ewu.edu      is Prospectus." - Dogbert the Almighty.
  864.  
  865.  
  866. ---------------------------
  867.  
  868. >From Spencer@world.std.com (Spencer)
  869. Subject: Getting Partition Info (as opposed to volume...)
  870. Date: Fri, 03 May 1996 12:40:41 -0400
  871. Organization: Spencer
  872.  
  873. Hi,
  874.  
  875. I suspect this is FAQ, but if someone could tell me how to search/get info
  876. on a partition rather than a complete volume I'd be most appreciative.
  877. Seems like PBCatSearch and PBHGetVInfoSync work while whole volumes, while
  878. I want to limit actions to volume partitions. Any pointers, would be
  879. greatly appreciated. (especially by e-mail: sam@spenser.com)
  880.  
  881. Thanks, Spencer
  882.  
  883. +++++++++++++++++++++++++++
  884.  
  885. >From blob@ccnet.com
  886. Date: Fri, 03 May 1996 19:59:54 -0700
  887. Organization: CCnet Communications (510-988-7140 guest)
  888.  
  889. In article <Spencer-0305961240410001@remote18.channel1.com>,
  890. Spencer@world.std.com (Spencer) wrote:
  891.  
  892. >I suspect this is FAQ, but if someone could tell me how to search/get info
  893. >on a partition rather than a complete volume I'd be most appreciative.
  894.  
  895. You use the driver-level PBRead to directly read block 1 of the drive. 
  896. That's the first parition map entry.  You can then calculate the next
  897. partition map entry from the offset and size.  See Inside
  898. Macintosh:Devices for details.
  899.  
  900. ---------------------------
  901.  
  902. >From joel@itg.ti.com (Joel Quejada)
  903. Subject: Getting monitor's scan rate?
  904. Date: 1 May 1996 20:26:37 GMT
  905. Organization: Texas Instruments, Inc.
  906.  
  907. Can anyone describe (with code if possible) what the best way to find
  908. out what a particular monitor's refresh rate is?
  909.  
  910. I am currently doing this by installing a VBL task into the device I
  911. want, entering a tight loop for 1 (or 2) seconds, and count how many
  912. times my task was called. Kinda cheesy, but it works OK. I was just
  913. wondering if there was a more direct way to do this.
  914.  
  915. Thanks,
  916.  
  917. Joel
  918.  
  919. +++++++++++++++++++++++++++
  920.  
  921. >From Dave Howell <dshowell@worldnet.att.net>
  922. Date: Wed, 01 May 1996 14:07:51 -0700
  923. Organization: Pablo Media
  924.  
  925. Joel Quejada wrote:
  926. > Can anyone describe (with code if possible) what the best way to find
  927. > out what a particular monitor's refresh rate is?
  928. > I am currently doing this by installing a VBL task into the device I
  929. > want, entering a tight loop for 1 (or 2) seconds, and count how many
  930. > times my task was called. Kinda cheesy, but it works OK. I was just
  931. > wondering if there was a more direct way to do this.
  932.  
  933. Joel, that sounds like a good approach, particularly because it applies 
  934. to any platform and will work on PCs, Macs, or whatever. Just don't stop 
  935. while this is going on. Have it take place during the first couple of 
  936. seconds of game play, possibly during your intro.
  937.  
  938. Keep in mind though, if you change resolutions during the game, that the 
  939. refresh rate will probably change as the resolution does.
  940.  
  941. Dave
  942.  ____________________ ___     _   _      ____________________
  943. |                    | _ \___| |_| | ___|                    |
  944. |    Dave Howell     |  _/ _ | _ \ |/ _ \     Pablo Media    |
  945. |____________________|_| \___|___/_|\___/____________________|
  946.  
  947. +++++++++++++++++++++++++++
  948.  
  949. >From squires@crl.com (Scott Squires)
  950. Date: Thu, 02 May 1996 07:48:25 -0800
  951. Organization: Puffin Designs
  952.  
  953. In article <4m8hdt$b89@dsk92.itg.ti.com>,
  954. joel@itg.ti.com (Joel Quejada) wrote:
  955.  
  956. >Can anyone describe (with code if possible) what the best way to find
  957. >out what a particular monitor's refresh rate is?
  958. >
  959. >I am currently doing this by installing a VBL task into the device I
  960. >want, entering a tight loop for 1 (or 2) seconds, and count how many
  961. >times my task was called. Kinda cheesy, but it works OK. I was just
  962. >wondering if there was a more direct way to do this.
  963. >
  964.  
  965.  
  966. Check out the DisplayManager, I think it provides a way to do it.
  967. You could also check VideoToolBox code.  (Avail. at Mac ftp sites)
  968.  
  969. -scott
  970.  
  971.  
  972.  
  973. Scott Squires               "Insert funny stuff here"
  974. squires@crl.com
  975. ScottSquir@aol.com
  976.  
  977.  
  978. +++++++++++++++++++++++++++
  979.  
  980. >From farrier@apple.com (Cary Farrier)
  981. Date: Thu, 02 May 1996 07:15:11 -0700
  982. Organization: Apple Computer, Inc.
  983.  
  984. In article <4m8hdt$b89@dsk92.itg.ti.com>, joel@itg.ti.com (Joel Quejada) wrote:
  985. > I am currently doing this by installing a VBL task into the device I
  986. > want, entering a tight loop for 1 (or 2) seconds, and count how many
  987. > times my task was called. Kinda cheesy, but it works OK. I was just
  988. > wondering if there was a more direct way to do this.
  989.  
  990. This is what DrawSprocket must do when it can't map the video mode
  991. constant to the values in <Video.h>.  If it can map the mode value,
  992. then it will return the constant instead.
  993.  
  994. -> Cary
  995.  
  996. -- 
  997. - -------------------------------------------------------------------
  998. Cary Farrier, aka Mr. DrawSprocket
  999. Software Engineer, Apple Game Technology Group
  1000. farrier@apple.com
  1001.  
  1002. ---------------------------
  1003.  
  1004. >From timmyd@netcom.com (Tim DeBenedictis)
  1005. Subject: Is there a "bad" fileRefNum value?
  1006. Date: Wed, 24 Apr 1996 16:47:42 GMT
  1007. Organization: NETCOM On-line Communication Services (408 261-4700 guest)
  1008.  
  1009. A file reference number (as returned by FSOpen(), etc.) is just a 16-bit 
  1010. integer.  As far as I know, this integer can take any value from -32768 to
  1011. 32767.  However, is there any value I can use to indicate a "bad" file 
  1012. reference number?  This value would have to be one which was never 
  1013. normally returned by FSOpen().  (Can FSOpen() ever return a fileRefNum 
  1014. of zero?)
  1015.  
  1016. The reason I ask is that I need to write a wrapper around FSOpen(), and 
  1017. the wrapper must return the fileRefNum if successful or an unambiguous 
  1018. error value on failure.  I can't have the error code separate from the 
  1019. fileRefNum, as FSOpen does.
  1020.  
  1021. Thanks in advance,
  1022.  
  1023. -Tim DeBenedictis
  1024. timmyd@netcom.com
  1025.  
  1026.  
  1027.  
  1028. +++++++++++++++++++++++++++
  1029.  
  1030. >From pottier@jonque.ens.fr (Francois Pottier)
  1031. Date: 25 Apr 1996 10:13:59 GMT
  1032. Organization: Ecole Normale Superieure, Paris
  1033.  
  1034. In article <timmydDqDLBI.6Ky@netcom.com>,
  1035. Tim DeBenedictis <timmyd@netcom.com> wrote:
  1036.  
  1037. >The reason I ask is that I need to write a wrapper around FSOpen(), and 
  1038. >the wrapper must return the fileRefNum if successful or an unambiguous 
  1039. >error value on failure.  I can't have the error code separate from the 
  1040. >fileRefNum, as FSOpen does.
  1041.  
  1042. I think -1 is usually used as an invalid refNum. But if you're
  1043. doing C++, throwing an exception would be much better style...
  1044.  
  1045. -- 
  1046. Francois Pottier
  1047. Francois.Pottier@ens.fr
  1048. Francois.Pottier@inria.fr
  1049. http://www.eleves.ens.fr:8080/home/pottier/
  1050.  
  1051. +++++++++++++++++++++++++++
  1052.  
  1053. >From Patrick.Stadelmann@etudiants.unine.ch (Patrick Stadelmann)
  1054. Date: Thu, 25 Apr 1996 16:52:08 +0200
  1055. Organization: University of Neuchatel
  1056.  
  1057. In article <timmydDqDLBI.6Ky@netcom.com>, timmyd@netcom.com (Tim
  1058. DeBenedictis) wrote:
  1059.  
  1060. > A file reference number (as returned by FSOpen(), etc.) is just a 16-bit 
  1061. > integer.  As far as I know, this integer can take any value from -32768 to
  1062. > 32767.  However, is there any value I can use to indicate a "bad" file 
  1063. > reference number?  This value would have to be one which was never 
  1064. > normally returned by FSOpen().  (Can FSOpen() ever return a fileRefNum 
  1065. > of zero?)
  1066. > The reason I ask is that I need to write a wrapper around FSOpen(), and 
  1067. > the wrapper must return the fileRefNum if successful or an unambiguous 
  1068. > error value on failure.  I can't have the error code separate from the 
  1069. > fileRefNum, as FSOpen does.
  1070.  
  1071. fileRefNums are always positive. Negative (including zero) fileRefNums
  1072. are invalid. Some Toolbox calls returns a fileRefNum of -1 to indicate
  1073. failure (eg, OpenResFile)
  1074.  
  1075. Patrick
  1076.  
  1077. -- 
  1078. Patrick Stadelmann <Patrick.Stadelmann@etudiants.unine.ch>
  1079.  
  1080. +++++++++++++++++++++++++++
  1081.  
  1082. >From cswan@actrix.gen.nz (Christopher Swan)
  1083. Date: Sun, 28 Apr 1996 23:46:39 +1200
  1084. Organization: Raine Storm Softworks
  1085.  
  1086. >>The reason I ask is that I need to write a wrapper around FSOpen(), and 
  1087. >>the wrapper must return the fileRefNum if successful or an unambiguous 
  1088. >>error value on failure.  I can't have the error code separate from the 
  1089. >>fileRefNum, as FSOpen does.
  1090. >
  1091. >I think -1 is usually used as an invalid refNum. But if you're
  1092. >doing C++, throwing an exception would be much better style...
  1093.  
  1094. There's a tech note somewhere that says to use 0 and explains why.
  1095.  
  1096. -- 
  1097.  
  1098. Cheers, Chris
  1099.  
  1100. - ---------------------------------------------------------------------
  1101. Christopher Swan                                 CompuServe 100354,3427   
  1102. PO Box 11567, Wellington, New Zealand                 or Raine@kagi.com
  1103. - ---------------------------------------------------------------------
  1104.  
  1105. +++++++++++++++++++++++++++
  1106.  
  1107. >From drbenway@accessus.net (Dr. Benway)
  1108. Date: Sun, 28 Apr 1996 17:48:25 -0500
  1109. Organization: Interzone
  1110.  
  1111. In article <cswan-2804962346390001@swan.actrix.gen.nz>,
  1112. cswan@actrix.gen.nz (Christopher Swan) wrote:
  1113.  
  1114. [ snip, snip, snip ]
  1115.  
  1116. > There's a tech note somewhere that says to use 0 and explains why.
  1117. > -- 
  1118. > Cheers, Chris
  1119. > -----------------------------------------------------------------------
  1120. > Christopher Swan                                 CompuServe 100354,3427   
  1121. > PO Box 11567, Wellington, New Zealand                 or Raine@kagi.com
  1122. > -----------------------------------------------------------------------
  1123.  
  1124. Yep, Tech Note FL 22, entitled "HFS Ruminations". Go to
  1125. http://dev.info.apple.com/technotes/Main.html and search for "vRefNum".
  1126.  
  1127. -- 
  1128. Dr. Benway :::::::::::::::::::: Interzone
  1129. =========================================
  1130. *   A roadkill on the highway of love.  *
  1131. =========================================
  1132. *         drbenway@accessus.net         *
  1133. *  http://www.cu-online.com/~browning/  *
  1134. =========================================
  1135.  
  1136. +++++++++++++++++++++++++++
  1137.  
  1138. >From peter@adi.co.nz (Peter Bromley)
  1139. Date: Wed, 01 May 1996 16:04:46 +1200
  1140. Organization: ADInstruments
  1141.  
  1142. In article <drbenway-2804961748250001@bville-pm2-2/141.accessus.net>,
  1143. drbenway@accessus.net (Dr. Benway) wrote:
  1144.  
  1145. > In article <cswan-2804962346390001@swan.actrix.gen.nz>,
  1146. > cswan@actrix.gen.nz (Christopher Swan) wrote:
  1147. > [ snip, snip, snip ]
  1148. > > There's a tech note somewhere that says to use 0 and explains why.
  1149. > > 
  1150. > > -- 
  1151. > > 
  1152. > > Cheers, Chris
  1153. > > 
  1154. > > -----------------------------------------------------------------------
  1155. > > Christopher Swan                                 CompuServe 100354,3427   
  1156. > > PO Box 11567, Wellington, New Zealand                 or Raine@kagi.com
  1157. > > -----------------------------------------------------------------------
  1158. > Yep, Tech Note FL 22, entitled "HFS Ruminations". Go to
  1159. > http://dev.info.apple.com/technotes/Main.html and search for "vRefNum".
  1160.  
  1161.  
  1162. Sorry, guys, you both replied too fast.
  1163.  
  1164. That technote refers to volume refNums (vRefNum).
  1165. The original poster wants to know what is a "bad" FILE refNum.
  1166.  
  1167. I use -1 in all my code. In fact I have defined a constant which I use.
  1168.  
  1169. badFileNum  = -1;   { Pascal }
  1170. --
  1171. Peter Bromley                                  (peter@adi.co.nz)
  1172. ADInstruments, Dunedin, New Zealand            
  1173.  
  1174. +++++++++++++++++++++++++++
  1175.  
  1176. >From steve@mindvision.com (Steve Kiene)
  1177. Date: Wed, 01 May 1996 18:52:44 -0600
  1178. Organization: MindVision Software
  1179.  
  1180. In article <timmydDqDLBI.6Ky@netcom.com>, timmyd@netcom.com (Tim
  1181. DeBenedictis) wrote:
  1182.  
  1183. > A file reference number (as returned by FSOpen(), etc.) is just a 16-bit 
  1184. > integer.  As far as I know, this integer can take any value from -32768 to
  1185. > 32767.  However, is there any value I can use to indicate a "bad" file 
  1186. > reference number?  This value would have to be one which was never 
  1187. > normally returned by FSOpen().  (Can FSOpen() ever return a fileRefNum 
  1188. > of zero?)
  1189. > The reason I ask is that I need to write a wrapper around FSOpen(), and 
  1190. > the wrapper must return the fileRefNum if successful or an unambiguous 
  1191. > error value on failure.  I can't have the error code separate from the 
  1192. > fileRefNum, as FSOpen does.
  1193.  
  1194. A little explaination on how the System generates file refNums:
  1195.  
  1196. File refNums are simply an offset into a block containing File Control
  1197. Blocks (FCB). The structure of the FCB is:
  1198.  
  1199. {
  1200. short size;
  1201. FCB   theFCBs[0..0];
  1202. }
  1203.  
  1204. So, the first file opened has a refNum of 2 (2 bytes into the structure,
  1205. past the size).
  1206.  
  1207. Each additional refNum is found by adding the size of the FCB structure.
  1208.  
  1209. To (finally) answer your question, -1, 0, 1, 3, 4, etc. are all invalid
  1210. file refNums. Any number except multiples of the FCB size + 2 are valid.
  1211.  
  1212. Keep in mind the volume refNums are negative and start at -1. So I would
  1213. use 1 if there is a chance that you might be working with a volume refNum
  1214. (zero generally indicates the default volume).
  1215.  
  1216. Hope this helps.
  1217.  
  1218. Steve Kiene
  1219. MindVision Software
  1220.  
  1221. +++++++++++++++++++++++++++
  1222.  
  1223. >From jumplong@aol.com (Jump Long)
  1224. Date: 3 May 1996 04:46:37 -0400
  1225. Organization: America Online, Inc. (1-800-827-6364)
  1226.  
  1227. Tim DeBenedictis wrote:
  1228. >A file reference number (as returned by FSOpen(), etc.) is just
  1229. >a 16-bit  integer.  As far as I know, this integer can take any
  1230. >value from -32768 to 32767.  However, is there any value I can
  1231. >use to indicate a "bad" file  reference number?  This value
  1232. >would have to be one which was never  normally returned by
  1233. >FSOpen().  (Can FSOpen() ever return a fileRefNum  of zero?)
  1234. >
  1235. >The reason I ask is that I need to write a wrapper around
  1236. >FSOpen(), and  the wrapper must return the fileRefNum if
  1237. >successful or an unambiguous  error value on failure.  I can't
  1238. >have the error code separate from the  fileRefNum, as FSOpen
  1239. >does.
  1240.  
  1241. Actually, File Manager reference numbers are always *positive* 2-byte
  1242. integers. Negative reference numbers returned by _Open are device driver
  1243. reference numbers.
  1244.  
  1245. So yes, you could use 0 to indicate that the file wasn't opened. However,
  1246. I think it's better style for File Manager related functions to return an
  1247. OSErr as the function result and not overload the use of the reference
  1248. number.
  1249.  
  1250. - Jim Luther
  1251.  
  1252. ---------------------------
  1253.  
  1254. >From at@neuro.psy.soton.ac.uk (Adriaan Tijsseling)
  1255. Subject: Mac Tutorials Here!
  1256. Date: Wed, 01 May 1996 20:23:24 +0000
  1257. Organization: Electronics and Computer Science, University of Southampton
  1258.  
  1259.  
  1260. Hi,
  1261.  
  1262. Found this great site containing an extensive introduction to 
  1263. Mac Programming. Complete with source codes. The best I've seen!
  1264.  
  1265. Go:
  1266.  
  1267. http://www.AmbrosiaSW.com/alt.sources.mac/macintosh-c/
  1268.  
  1269.  
  1270. Enjoy,
  1271.  
  1272. Adriaan
  1273.  
  1274. ---------------------------
  1275.  
  1276. >From Steve - The Mac - Watson <stevew@wallchart.com>
  1277. Subject: Overlaying a PICT onto a background
  1278. Date: Mon, 29 Apr 1996 09:43:43 +0100
  1279. Organization: MICAbuild Limited
  1280.  
  1281. I have a PICT image whose background is white. I am using DrawPicture() 
  1282. to place it onto a black background, but the white gets copied as well - 
  1283. rather like cutting out a piece of paper and sticking it on.
  1284.  
  1285. What I want is to have only the image appear - that is, surrounded by 
  1286. black. I have tried using PenMode(srcBic) and PenMode(transparent + 
  1287. srcCopy) and various others I've forgotten but I just get the same 
  1288. result.
  1289.  
  1290. Is using PenMode the correct way to do this or should I be using some other
  1291. calls?
  1292.  
  1293. Thanks for any help.
  1294.  
  1295. +++++++++++++++++++++++++++
  1296.  
  1297. >From "Edward Voas" <edv@amargosa.com>
  1298. Date: 1 May 96 19:28:34 +0000
  1299. Organization: Shore.Net/Eco Software, Inc; (info@shore.net)
  1300.  
  1301. >What I want is to have only the image appear - that is, surrounded by 
  1302. >black. I have tried using PenMode(srcBic) and PenMode(transparent + 
  1303. >srcCopy) and various others I've forgotten but I just get the same 
  1304. >result.
  1305. >
  1306. >
  1307. >Is using PenMode the correct way to do this or should I be using some
  1308. other
  1309. >calls?
  1310. >
  1311.  
  1312. The only way I know how to accomplish this is to call DrawPicture onto an
  1313. offscreen GWorld and then copybits it to the screen using the transparent
  1314. mode. I hope when you mentioned you were using transparent + srcCopy, that
  1315. you weren't really adding them.
  1316.  
  1317. Ed Voas
  1318.  
  1319. +++++++++++++++++++++++++++
  1320.  
  1321. >From heaney@crl.com (John S. Heaney)
  1322. Date: 2 May 1996 15:17:58 -0700
  1323. Organization: CRL Dialup Internet Access    (415) 705-6060  [Login: guest]
  1324.  
  1325. In article <ADAD6BE6-137AE3@198.115.181.209>,
  1326. Edward Voas <edv@amargosa.com> wrote:
  1327. >>What I want is to have only the image appear - that is, surrounded by 
  1328. >>black. I have tried using PenMode(srcBic) and PenMode(transparent + 
  1329. >>srcCopy) and various others I've forgotten but I just get the same 
  1330. >>result.
  1331. >
  1332. >The only way I know how to accomplish this is to call DrawPicture onto an
  1333. >offscreen GWorld and then copybits it to the screen using the transparent
  1334. >mode. 
  1335.  
  1336. This is also the way I do it, but I have successfully used Resorcerer to 
  1337. decompose the PICT structure and change the transfer mode. I don't 
  1338. generally do it this way because I often use PICT file instead of PICT 
  1339. resources. In order to satisfy Resourcerer's template I have to delete 
  1340. the first 512 bytes, make the change and insert 512 bytes. I also have to 
  1341. make a synonym of the data fork to make it appear as a PICT resource. 
  1342. It's probably not nearly as bad if you are using PICT resources.
  1343.  
  1344. I've had spotty results with Canvas, which gives you a great deal of 
  1345. control over the way PICTs are built, but not in any obvious way.
  1346.  
  1347. >I hope when you mentioned you were using transparent + srcCopy, that
  1348. >you weren't really adding them.
  1349.  
  1350. Since srcCopy is 0, it shouldn't hurt. It makes more sense to 'or' them, 
  1351. though.
  1352. -- 
  1353. John Heaney              Time flies whether you're having fun or not.
  1354. heaney@crl.com
  1355.  
  1356.  
  1357. ---------------------------
  1358.  
  1359. >From jonb@ctron.com (Jonathan Baumgartner)
  1360. Subject: Preventing Aliases from being automatically resolved?
  1361. Date: Mon, 29 Apr 1996 13:26:21 -0400
  1362. Organization: Cabletron Systems Inc.
  1363.  
  1364. I would like to be able to open aliases with CustomGetFile as aliases,
  1365. without the system automatically resolving them and returning the original
  1366. file. I'd also like to be able to do this from inside my Open Documents
  1367. handler function.
  1368.  
  1369. I know this can be done, since ResEdit allows it, as does StuffIt. Could
  1370. someone point me in the right direction?
  1371.  
  1372. thanks,
  1373. jon
  1374. --
  1375. Jonathan Baumgartner           "Duct tape is like the Force.  It has a light
  1376. jonb@ctron.com                  side, a dark side, and it holds the universe
  1377.                                 together." -- Carl Zwanzig
  1378.  
  1379. +++++++++++++++++++++++++++
  1380.  
  1381. >From bez@deltanet.com (Dave Besbris)
  1382. Date: Wed, 01 May 1996 21:31:39 -0700
  1383. Organization: Delta Internet Services, Anaheim, CA
  1384.  
  1385. In article <jonb-2904961326210001@vorlon.ctron.com>, jonb@ctron.com
  1386. (Jonathan Baumgartner) wrote:
  1387.  
  1388. > I would like to be able to open aliases with CustomGetFile as aliases,
  1389. > without the system automatically resolving them and returning the original
  1390. > file. I'd also like to be able to do this from inside my Open Documents
  1391. > handler function.
  1392. > I know this can be done, since ResEdit allows it, as does StuffIt. Could
  1393. > someone point me in the right direction?
  1394. > thanks,
  1395. > jon
  1396. > --
  1397. > Jonathan Baumgartner           "Duct tape is like the Force.  It has a light
  1398. > jonb@ctron.com                  side, a dark side, and it holds the universe
  1399. >                                 together." -- Carl Zwanzig
  1400.  
  1401.  
  1402. You basically fake out StandardFile with a hook proc. When you get the
  1403. "openalias" command (sorry, but I'm away from any kind of header files)
  1404. remap it to the "openselection" command. There is a recent apple snippit
  1405. that does this. Check the developer web site: http://dev.info.apple.com or
  1406. the developer CD's.
  1407.  
  1408.  
  1409. happy hooking!
  1410.  
  1411. bez
  1412.  
  1413. bez@deltanet.com
  1414.  
  1415. ---------------------------
  1416.  
  1417. >From hsfr@hydra.dra.hmg.gb (Dr H.S. Field-Richards)
  1418. Subject: Restricting PBCatSearch to a single directory
  1419. Date: Wed, 01 May 1996 17:27:23 +0100
  1420. Organization: DRA
  1421.  
  1422. I want to restrict searching for files to a single directory rather
  1423. than have PBCatSearchSync search an entire volume. I am sure the
  1424. information is somewhere but I have not been able to find anything.
  1425.  
  1426. Can anyone help or supply examples?
  1427.  
  1428. Thanks in advance
  1429.  
  1430. Hugh Field-Richards
  1431.  
  1432. -- 
  1433. Hugh S. Field-Richards
  1434. DRA (RSRE), St Andrew's Road, Malvern, Worcs, WR14 3PS UK
  1435. Tel: 01684 895075   Fax: 01684 896113  Email: hsfr@hydra.dra.hmg.gb
  1436.  
  1437. +++++++++++++++++++++++++++
  1438.  
  1439. >From jumplong@aol.com (Jump Long)
  1440. Date: 3 May 1996 04:53:47 -0400
  1441. Organization: America Online, Inc. (1-800-827-6364)
  1442.  
  1443. Dr H.S. Field-Richards wrote:
  1444. >I want to restrict searching for files to a single directory
  1445. >rather than have PBCatSearchSync search an entire volume. I am
  1446. >sure the information is somewhere but I have not been able to
  1447. >find anything.
  1448. >
  1449. >Can anyone help or supply examples?
  1450.  
  1451. If you want to get the items of a specified directory *not including* any
  1452. of its sub-directories, you should enumerate through the directory using
  1453. indexed PBGetCatInfo calls. An example of that can be found in the
  1454. MoreFiles sample code
  1455. <ftp://members.aol.com/JumpLong/MoreFiles_1.4.2.sea.hqx> in the form of a
  1456. function named GetDirItems. Using indexed PBGetCatInfo calls is much
  1457. faster than PBCatSearch in this situation because the whole catalog
  1458. doesn't have to be read.
  1459.  
  1460. If you want to get the items of a specified directory *including* any of
  1461. its sub-directories, MoreFiles has two other routines you'll like:
  1462.  
  1463. The IndexedSearch function has a programming interface just like
  1464. PBCatSearchSync only it has an additional dirID parameter that lets you
  1465. specify the directory to start the search in.
  1466.  
  1467. Another function that might be used for this in MoreFiles is
  1468. IterateDirectory. IterateDirectory indexes through the specified directory
  1469. structure calling a function you supply once for each file or directory it
  1470. finds. You get to tell IterateDirectory how many subdirectories deep you
  1471. want to index through.
  1472.  
  1473. - Jim Luther
  1474.  
  1475. +++++++++++++++++++++++++++
  1476.  
  1477. >From "Edward Voas" <edv@amargosa.com>
  1478. Date: 3 May 96 09:38:18 +0100
  1479. Organization: Shore.Net/Eco Software, Inc; (info@shore.net)
  1480.  
  1481. >I want to restrict searching for files to a single directory rather
  1482. >than have PBCatSearchSync search an entire volume. I am sure the
  1483. >information is somewhere but I have not been able to find anything.
  1484. >
  1485. >Can anyone help or supply examples?
  1486. >
  1487.  
  1488. By specifying the fsSBFlParID bit in the ioSearchBits fiels and the
  1489. directoryID itself in ioFlParID in both the ioSearchInfo1 and ioSearchInfo2
  1490. param blocks, you can restrict the search to only files with a particular
  1491. parent ID. Obviously in the paramblock used in the CatSearch call, you can
  1492. specify the volume to search.
  1493.  
  1494. Something like:
  1495.  
  1496. CInfoPBRec        search1, search2;
  1497. CSParam        pb;
  1498. Ptr            buffer;
  1499. Ptr            myMatchArray;
  1500. short            maxHits = 10;
  1501.  
  1502. buffer = NewPtr( sizeof( FSSpec ) * maxHits );
  1503. myMatchArray = NewPtr( kOptBufferSize );
  1504.  
  1505. search1.hFileInfo.ioFlParID    = myFavoriteDirectory;
  1506. search2.hFileInfo.ioFlParID    = myFavoriteDirectory;
  1507.  
  1508. pb.ioCompletion         = NULL;
  1509. pb.ioNamePtr        = NULL;
  1510. pb.ioVRefNum        = myFavoriteVolume;
  1511. pb.ioMatchPtr        = myMatchArray;
  1512. pb.ioReqMatchCount     = maxHits;
  1513. pb.ioSearchBits        = fsSBFlParID + fsSBPartialName; // for example
  1514. pb.ioSearchInfo1        = &search1;
  1515. pb.ioSearchInfo2          = &search2;
  1516. pb.ioCatPosition.initialize = 0;
  1517. pb.ioOptBuffer        = buffer;
  1518. pb.ioOptBufferSize     = kOptBufferSize;
  1519.  
  1520. That's kinda the idea. I haven't actually compiled this and used it, but it
  1521. should be pretty  close. I actually have a nice C++ class that implements a
  1522. disk search.
  1523.  
  1524. Ed Voas
  1525.  
  1526. ---------------------------
  1527.  
  1528. >From DaveZ@mailbag.com (David B. Zwiefelhofer)
  1529. Subject: SetApplLimit
  1530. Date: Tue, 23 Apr 1996 20:24:36 -0500
  1531. Organization: Utility Reduction Specialists, Inc.
  1532.  
  1533.       SetApplLimit(Ptr(GetApplLimit- extraBytes)); 
  1534.  
  1535.  I use the preceding line of code to set my stack size. Unfortunately, it
  1536. doesn't seem to work perfectly. If I set extraBytes to any value less than
  1537. 24608 (including setting it to zero) I get a net change in stack size of
  1538. 24608. If I set extraBytes to anything greater than 24608 (less than my
  1539. total partition size, of course) it works perfectly.
  1540.  
  1541.  
  1542. My application is an appe (FBA) and I thought that the default stack size
  1543. for an appe was 8K, but when I check it it is only 1960 bytes (1964 under
  1544. 7.5.3) thus leading to my need to alter the stack size.
  1545.  
  1546. Can anyone tell me why I'm encountering such weirdness in stack sizes?
  1547.  
  1548. Thanks,
  1549.  
  1550. Dave
  1551.  
  1552. -- 
  1553. David B. Zwiefelhofer
  1554. Utility Reduction Specialists, Inc.
  1555. 1605 Monroe Street, Suite 110
  1556. Madison, WI  53211-2052
  1557. (608) 258-8965
  1558. (608) 258-9686 FAX
  1559.  
  1560. +++++++++++++++++++++++++++
  1561.  
  1562. >From pottier@drakkar.ens.fr (Francois Pottier)
  1563. Date: 24 Apr 1996 09:33:12 GMT
  1564. Organization: Ecole Normale Superieure, Paris
  1565.  
  1566. In article <DaveZ-2304962024360001@msn_7_16.binc.net>,
  1567. David B. Zwiefelhofer <DaveZ@mailbag.com> wrote:
  1568.  
  1569. > If I set extraBytes to any value less than 24608 (including setting
  1570. > it to zero) I get a net change in stack size of 24608.
  1571.  
  1572. I think this behavior is documented. There is a low memory variable
  1573. called DfltStack (or something like that) which is the minimum stack
  1574. size accepted by SetApplLimit. As you have noticed, it is set to
  1575. 24K by default. I think it is accepted practice to change the value
  1576. of this global, call SetApplLimit, then restore the global to its
  1577. previous value. I do this in my FBA and it works fine. I think the
  1578. tech note on FBAs mentions this (PS02?)
  1579.  
  1580. >My application is an appe (FBA) and I thought that the default stack size
  1581. >for an appe was 8K, but when I check it it is only 1960 bytes (1964 under
  1582. >7.5.3) thus leading to my need to alter the stack size.
  1583.  
  1584. As far as I know, the default stack size for FBAs is 2K which is way
  1585. insufficient.
  1586.  
  1587. -- 
  1588. Francois Pottier
  1589. Francois.Pottier@ens.fr
  1590. Francois.Pottier@inria.fr
  1591. http://www.eleves.ens.fr:8080/home/pottier/
  1592.  
  1593. +++++++++++++++++++++++++++
  1594.  
  1595. >From DaveZ@mailbag.com (David B. Zwiefelhofer)
  1596. Date: Thu, 25 Apr 1996 08:12:10 -0500
  1597. Organization: Utility Reduction Specialists, Inc.
  1598.  
  1599. In article <4lksgo$evm@nef.ens.fr>, pottier@drakkar.ens.fr (Francois
  1600. Pottier) wrote:
  1601.  
  1602. > In article <DaveZ-2304962024360001@msn_7_16.binc.net>,
  1603. > David B. Zwiefelhofer <DaveZ@mailbag.com> wrote:
  1604. > > If I set extraBytes to any value less than 24608 (including setting
  1605. > > it to zero) I get a net change in stack size of 24608.
  1606. > I think this behavior is documented. There is a low memory variable
  1607. > called DfltStack (or something like that) which is the minimum stack
  1608. > size accepted by SetApplLimit. As you have noticed, it is set to
  1609. > 24K by default. I think it is accepted practice to change the value
  1610. > of this global, call SetApplLimit, then restore the global to its
  1611. > previous value. I do this in my FBA and it works fine. I think the
  1612. > tech note on FBAs mentions this (PS02?)
  1613.  
  1614. Thanks Francois, it worked like a charm. BTW, it is DefltStack and it is
  1615. at $31E.
  1616.  
  1617. -Dave
  1618.  
  1619. -- 
  1620. David B. Zwiefelhofer
  1621. Utility Reduction Specialists, Inc.
  1622. 1605 Monroe Street, Suite 110
  1623. Madison, WI  53211-2052
  1624. (608) 258-8965
  1625. (608) 258-9686 FAX
  1626.  
  1627. +++++++++++++++++++++++++++
  1628.  
  1629. >From blob@ccnet.com
  1630. Date: Sun, 28 Apr 1996 16:42:19 -0700
  1631. Organization: CCnet Communications (510-988-7140 guest)
  1632.  
  1633. In article <DaveZ-2304962024360001@msn_7_16.binc.net>, DaveZ@mailbag.com
  1634. (David B. Zwiefelhofer) wrote:
  1635.  
  1636. >      SetApplLimit(Ptr(GetApplLimit- extraBytes)); 
  1637. >
  1638. > I use the preceding line of code to set my stack size. Unfortunately, it
  1639. >doesn't seem to work perfectly. If I set extraBytes to any value less than
  1640. >24608 (including setting it to zero) I get a net change in stack size of
  1641. >24608. If I set extraBytes to anything greater than 24608 (less than my
  1642. >total partition size, of course) it works perfectly.
  1643. >
  1644. >
  1645. >My application is an appe (FBA) and I thought that the default stack size
  1646. >for an appe was 8K, but when I check it it is only 1960 bytes (1964 under
  1647. >7.5.3) thus leading to my need to alter the stack size.
  1648. >
  1649. >Can anyone tell me why I'm encountering such weirdness in stack sizes?
  1650.  
  1651.  
  1652. See tech note PS 2, available at some URL such as
  1653. <http://dev.info.apple.com/technotes/Archive/Processes/ps_02.html>.  Also
  1654. see IM:Files Errata, also available at <http://dev.info.apple.com/>.
  1655.  
  1656. Faceless Background Applications by default get a 2K stack.  Other
  1657. applications get a 24K stack.  There's a low memory global which
  1658. determines how small you can make your stack if you change it.  I don't
  1659. remember if it's documented or not.
  1660.  
  1661. +++++++++++++++++++++++++++
  1662.  
  1663. >From jeremyr@dcs.qmw.ac.uk (Jeremy Roussak)
  1664. Date: 30 Apr 1996 20:33:43 GMT
  1665. Organization: Queen Mary & Westfield College, London, England
  1666.  
  1667. In article <DaveZ-2304962024360001@msn_7_16.binc.net>
  1668. DaveZ@mailbag.com (David B. Zwiefelhofer) writes:
  1669.  
  1670. > My application is an appe (FBA) and I thought that the default stack size
  1671. > for an appe was 8K, but when I check it it is only 1960 bytes (1964 under
  1672. > 7.5.3) thus leading to my need to alter the stack size.
  1673.  
  1674. There's a tech note (I think it's PS02) which discusses these things.
  1675. The default stack size is 8k on old Macs, 24k on newer ones (by
  1676. "newer", I think I mean anything with colour QD!) and 2k for FBAs. It
  1677. can be increased, however: the tech note describes how to do it as well
  1678. as discussing a few other interesting things about FBAs.
  1679.  
  1680. Jeremy
  1681.  
  1682. ---------------------------
  1683.  
  1684. >From thnhan@netcom.com (Nhan Tran)
  1685. Subject: Time running out in year 2040
  1686. Date: Sat, 4 May 1996 06:42:54 GMT
  1687. Organization: NETCOM On-line Communication Services (408 261-4700 guest)
  1688.  
  1689. The GetDateTime() returns the number of elapsed seconds since 1904 (a 32-bit
  1690. value). On Feb. 6, 2040, it will wrap back to 0. What then? Probably at
  1691. that time, noone still use the good old Mac.... 
  1692.  
  1693. N.Tran
  1694.  
  1695.  
  1696. +++++++++++++++++++++++++++
  1697.  
  1698. >From rick@kagi.com (Rick Holzgrafe)
  1699. Date: Sat, 04 May 1996 13:21:11 -0700
  1700. Organization: Semicolon Software
  1701.  
  1702. In article <thnhanDqvBzI.FFo@netcom.com>, thnhan@netcom.com (Nhan Tran) wrote:
  1703.  
  1704. > The GetDateTime() returns the number of elapsed seconds since 1904 (a 32-bit
  1705. > value). On Feb. 6, 2040, it will wrap back to 0. What then? Probably at
  1706. > that time, noone still use the good old Mac.... 
  1707.  
  1708. Probably. That's nearly 45 years from now -- there have hardly *been*
  1709. computers for 45 years! :-)
  1710.  
  1711. But if you want to be optimistic, then I'd say that by then the MacOS will
  1712. have been through a lot of evolution, and will no longer be using a 32-bit
  1713. seconds counter for a clock.
  1714.  
  1715. Be glad you're on a Mac -- there are more than a few computer systems in
  1716. the world whose clocks are scheduled to break immediately after 11:59 pm,
  1717. December 31, 1999.
  1718.  
  1719. -- Rick Holzgrafe
  1720.    Semicolon Software
  1721.    rick@kagi.com
  1722.    http://www.opendoor.com/Rick/Semicolon.html
  1723.  
  1724. +++++++++++++++++++++++++++
  1725.  
  1726. >From Ben Trumbull <casper@minerva.cis.yale.edu>
  1727. Date: Sat, 4 May 1996 19:30:12 -0400
  1728. Organization: Yale University
  1729.  
  1730. > In article <thnhanDqvBzI.FFo@netcom.com>, thnhan@netcom.com (Nhan Tran) wrote:
  1731. > > The GetDateTime() returns the number of elapsed seconds since 1904 (a 32-bit
  1732. > > value). On Feb. 6, 2040, it will wrap back to 0. What then? Probably at
  1733. > > that time, noone still use the good old Mac.... 
  1734.  
  1735. Mmmm.  Well a 64 bit value will only count a mere 600 billion years.  Of 
  1736. course, I don't think the computers will continue to count after the sun 
  1737. explodes ...
  1738.  
  1739. As if people can run system 6 software on a PPC, I don't think we have to 
  1740. worry about this.
  1741.  
  1742. terminally curious,
  1743.  
  1744. Ben
  1745.  
  1746. ______________________________________________________________________
  1747. Benjamin Trumbull
  1748. trumbull@cs.yale.edu                  The optimist believes we live
  1749. Yale University                        in the best of all possible worlds,
  1750. http://www.cis.yale.edu/~casper        the pessimist fears this is so.
  1751.  
  1752.  
  1753.  
  1754.  
  1755. +++++++++++++++++++++++++++
  1756.  
  1757. >From jwbaxter@olympus.net (John W. Baxter)
  1758. Date: Sun, 05 May 1996 11:18:46 -0700
  1759. Organization: Internet for the Olympic Peninsula
  1760.  
  1761. In article <thnhanDqvBzI.FFo@netcom.com>, thnhan@netcom.com (Nhan Tran) wrote:
  1762.  
  1763. >The GetDateTime() returns the number of elapsed seconds since 1904 (a 32-bit
  1764. >value). On Feb. 6, 2040, it will wrap back to 0. What then? Probably at
  1765. >that time, noone still use the good old Mac.... 
  1766.  
  1767. That's why Apple, several years ago, created the 64-bit form of the time. 
  1768. Zero is still at Jan 1, 1904; the time is a signed 64-bit number of
  1769. seconds from then, giving a range of about 33,000 years each way from that
  1770. point.  Clock chip still works as you describe.
  1771.  
  1772. Presumably, System Software (patches for old ROMs) and the ROM will adjust
  1773. before 2040 arrives, bringing with it The End of Time.
  1774.  
  1775. You may have noticed that the transition into the 2000s is pretty smooth,
  1776. in terms of converting dates like "2/15/09".  Apple arranged that for us
  1777. several years ago.  [If you really want "2/15/1909", you have to say so,
  1778. like that.]  Sometime around 2015**,  "2/15/96" becomes Feb 15, 2096 if
  1779. the algorithms in place stay the same and the long forms of date/time are
  1780. used by the program.  (**I found the changeover experimentally once, but
  1781. forget exactly when it is.)
  1782.  
  1783.    --John
  1784.  
  1785. -- 
  1786.   The primary cause of problems is solutions.
  1787. John W. Baxter    Port Ludlow, WA, USA     jwbaxter@olympus.net
  1788.  
  1789. ---------------------------
  1790.  
  1791. >From joel@itg.ti.com (Joel Quejada)
  1792. Subject: To sync to VBL or not to sync....
  1793. Date: 2 May 1996 02:07:42 GMT
  1794. Organization: Texas Instruments, Inc.
  1795.  
  1796. I need to decide whether or not to sync to the VBL for each frame of my
  1797. animation, or just have a Time Manager task to maintain the frame rate
  1798. I want. There is a distinct improvement in smoothness when I sync to
  1799. the VBL interrupt, but I have read about people discouraging the use of
  1800. it.
  1801.  
  1802. What's the scoop?
  1803.  
  1804. Thanks,
  1805.  
  1806. Joel
  1807.  
  1808. +++++++++++++++++++++++++++
  1809.  
  1810. >From squires@crl.com (Scott Squires)
  1811. Date: Thu, 02 May 1996 07:48:28 -0800
  1812. Organization: Puffin Designs
  1813.  
  1814. In article <4m95de$jn9@dsk92.itg.ti.com>,
  1815. joel@itg.ti.com (Joel Quejada) wrote:
  1816.  
  1817. >I need to decide whether or not to sync to the VBL for each frame of my
  1818. >animation, or just have a Time Manager task to maintain the frame rate
  1819. >I want. There is a distinct improvement in smoothness when I sync to
  1820. >the VBL interrupt, but I have read about people discouraging the use of
  1821. >it.
  1822. >
  1823.  
  1824. Usually the only real benefit to syncing to VBL is when a large
  1825. area of the image is moving across frame.  VBL will minimize the
  1826. tearing, but only if you have enough speed to blit in one video
  1827. frame.
  1828.  
  1829. -scott
  1830.  
  1831.  
  1832. Scott Squires               "Insert funny stuff here"
  1833. squires@crl.com
  1834. ScottSquir@aol.com
  1835.  
  1836.  
  1837. +++++++++++++++++++++++++++
  1838.  
  1839. >From highrisk@shellx.best.com (Michael Kelly)
  1840. Date: 2 May 1996 10:09:56 -0700
  1841. Organization: High Risk Ventures, Inc.
  1842.  
  1843. In article <ADAE194C966826A04@192.0.2.1>,
  1844. Scott Squires <squires@crl.com> wrote:
  1845. >>I need to decide whether or not to sync to the VBL for each frame of my
  1846. >>animation, or just have a Time Manager task to maintain the frame rate
  1847. >Usually the only real benefit to syncing to VBL is when a large
  1848. >area of the image is moving across frame.  VBL will minimize the
  1849. >tearing, but only if you have enough speed to blit in one video
  1850. >frame.
  1851.  
  1852. And there's also the problem that different monitors have different
  1853. VBL frequencies, from about 67hz to 90hz or more.  If you use the
  1854. VBL to control your frame rate you'll end up with different frame
  1855. rates on different monitors.
  1856.  
  1857. -- 
  1858. | Michael A. Kelly                  High Risk Ventures, Inc |
  1859. | President                                    PO Box 70690 |
  1860. | mkelly@hrvinc.com                        Eugene, OR 97401 |
  1861. | http://www.hrvinc.com                      (415) 359-4176 |
  1862.  
  1863. +++++++++++++++++++++++++++
  1864.  
  1865. >From Dave Howell <dshowell@worldnet.att.net>
  1866. Date: Thu, 02 May 1996 15:55:51 -0700
  1867. Organization: Pablo Media
  1868.  
  1869. Michael Kelly wrote:
  1870. > In article <ADAE194C966826A04@192.0.2.1>,
  1871. > Scott Squires <squires@crl.com> wrote:
  1872. > >>I need to decide whether or not to sync to the VBL for each frame of my
  1873. > >>animation, or just have a Time Manager task to maintain the frame rate
  1874. > >
  1875. > >Usually the only real benefit to syncing to VBL is when a large
  1876. > >area of the image is moving across frame.  VBL will minimize the
  1877. > >tearing, but only if you have enough speed to blit in one video
  1878. > >frame.
  1879. > And there's also the problem that different monitors have different
  1880. > VBL frequencies, from about 67hz to 90hz or more.  If you use the
  1881. > VBL to control your frame rate you'll end up with different frame
  1882. > rates on different monitors.
  1883.  
  1884. Well, whether or not you sync to the VBL, the screen refresh rate will be 
  1885. different on different monitors, but your game's frame rate will be the same, so 
  1886. that's not really an issue. Let's assume that the game rendering frame rate is 
  1887. less than the screen refresh rate, and that the refresh rate is NOT an integral 
  1888. multiple of the game frame rate. That's a pretty safe assumption. The trick then 
  1889. is to avoid starting a CopyBits in the middle of a screen refresh, to eliminate 
  1890. tearing.
  1891.  
  1892. QuickTime movie playback had this issue to deal with. Their solution was to 
  1893. support "asynchronous codecs," which decompressed video frames (analogous to your 
  1894. game's offscreen rendering or animation) and buffered them in non-interrupt time, 
  1895. and then those buffered frames were blitted to the screen (using CopyBits or not, 
  1896. depending on the codec) at the appropriate VBL time. That's why with recent 
  1897. versions of QuickTime you don't get tearing in movie playback.
  1898.  
  1899. You can use QuickTime's approach to eliminate tearing by scheduling a VBL task 
  1900. that does nothing but blit buffered frames to the screen. Note that as Scott 
  1901. Squires said, it's really not an issue unless your whole screen tends to change 
  1902. at once, as in a first-person game like Marathon or Doom. In a game with a static 
  1903. background and small animating sprites, it's not so critical.
  1904.  
  1905. Dave
  1906.  ____________________ ___     _   _      ____________________
  1907. |                    | _ \___| |_| | ___|                    |
  1908. |    Dave Howell     |  _/ _ | _ \ |/ _ \     Pablo Media    |
  1909. |____________________|_| \___|___/_|\___/____________________|
  1910.  
  1911. +++++++++++++++++++++++++++
  1912.  
  1913. >From joel@itg.ti.com (Joel Quejada)
  1914. Date: 3 May 1996 13:37:00 GMT
  1915. Organization: Texas Instruments, Inc.
  1916.  
  1917. Scott Squires (squires@crl.com) wrote:
  1918. :  
  1919. : Usually the only real benefit to syncing to VBL is when a large
  1920. : area of the image is moving across frame.  VBL will minimize the
  1921. : tearing, but only if you have enough speed to blit in one video
  1922. : frame.
  1923. : -scott
  1924.  
  1925.  
  1926. That's what I thought....I have between 1-5 sprites moving on screen at
  1927. any given time. Each sprite is about 50x80 pixels in size. Without 
  1928. syncing to VBL (only using a Time Manager task to control the frame rate)
  1929. I get OK smoothness, but when syncing to VBL it is smooth as glass. Could 
  1930. I be doing something wrong? Could the fact that all of the sprites are 
  1931. moving from top to bottom (or bottom to top) be causing it to be more 
  1932. sensitive to the VBL?
  1933.  
  1934. I just hear so many people say that syncing to VBL is not necessary,
  1935. even some that discourage its use, but I just don't think the smoothness
  1936. is acceptable unless I sync to VBL.
  1937.  
  1938. Thanks!
  1939.  
  1940. Joel
  1941.  
  1942. +++++++++++++++++++++++++++
  1943.  
  1944. >From highrisk@shellx.best.com (Michael Kelly)
  1945. Date: 3 May 1996 09:06:41 -0700
  1946. Organization: High Risk Ventures, Inc.
  1947.  
  1948. In article <31893D77.7DE6@worldnet.att.net>,
  1949. Dave Howell  <dshowell@worldnet.att.net> wrote:
  1950. >Michael Kelly wrote:
  1951. >> And there's also the problem that different monitors have different
  1952. >> VBL frequencies, from about 67hz to 90hz or more.  If you use the
  1953. >> VBL to control your frame rate you'll end up with different frame
  1954. >> rates on different monitors.
  1955. >
  1956. >Well, whether or not you sync to the VBL, the screen refresh rate will be 
  1957. >different on different monitors, but your game's frame rate will be the same, so 
  1958. >that's not really an issue.
  1959.  
  1960. You misunderstood me.  I was saying that if you use the VBL to
  1961. control your game frame rate you'll end up with a different game
  1962. frame rate with different monitors.  You should use some other
  1963. method of keeping time to control your game frame rate.  I have
  1964. used both TickCount and the Time Manager in the past.
  1965.  
  1966. -- 
  1967. | Michael A. Kelly                  High Risk Ventures, Inc |
  1968. | President                                    PO Box 70690 |
  1969. | mkelly@hrvinc.com                        Eugene, OR 97401 |
  1970. | http://www.hrvinc.com                      (415) 359-4176 |
  1971.  
  1972. +++++++++++++++++++++++++++
  1973.  
  1974. >From "Andrew C. Plotkin" <erkyrath+@CMU.EDU>
  1975. Date: Fri,  3 May 1996 12:14:37 -0400
  1976. Organization: Carnegie Mellon, Pittsburgh, PA
  1977.  
  1978. joel@itg.ti.com (Joel Quejada) writes:
  1979. > That's what I thought....I have between 1-5 sprites moving on screen at
  1980. > any given time. Each sprite is about 50x80 pixels in size. Without 
  1981. > syncing to VBL (only using a Time Manager task to control the frame rate)
  1982. > I get OK smoothness, but when syncing to VBL it is smooth as glass. Could 
  1983. > I be doing something wrong? Could the fact that all of the sprites are 
  1984. > moving from top to bottom (or bottom to top) be causing it to be more 
  1985. > sensitive to the VBL?
  1986. > I just hear so many people say that syncing to VBL is not necessary,
  1987. > even some that discourage its use, but I just don't think the smoothness
  1988. > is acceptable unless I sync to VBL.
  1989.  
  1990. Generic answer to low-level hackery debates: make it optional. Stick a
  1991. checkbox in the preferences dialog: 
  1992. [] Fast, not quite so smooth
  1993. [] Smooth, not quite so fast
  1994.  
  1995. It's also much nicer to get email saying "Smooth mode doesn't work"
  1996. than it is to get email saying "Your damn game doesn't run!"
  1997.  
  1998. --Z
  1999.  
  2000. "And Aholibamah bare Jeush, and Jaalam, and Korah: these were the borogoves..."
  2001.  
  2002. +++++++++++++++++++++++++++
  2003.  
  2004. >From highrisk@shellx.best.com (Michael Kelly)
  2005. Date: 3 May 1996 09:18:03 -0700
  2006. Organization: High Risk Ventures, Inc.
  2007.  
  2008. In article <4md25s$ded@dsk92.itg.ti.com>, Joel Quejada <joel@itg.ti.com> wrote:
  2009. >I just hear so many people say that syncing to VBL is not necessary,
  2010. >even some that discourage its use, but I just don't think the smoothness
  2011. >is acceptable unless I sync to VBL.
  2012.  
  2013. It depends on your program.  If you're syncing to VBL, and your screen update
  2014. is slow enough so that the beam catches up with your drawing, you'll still
  2015. get tearing.  If your screen update is of a very consistent speed, the tearing
  2016. will be very noticeable because it will always happen around the same place.
  2017.  
  2018. I had this problem with Cyclone on slower machines, so I stopped syncing to
  2019. the VBL.  I get tearing of course (it's unavoidable if you're not syncing to
  2020. VBL), but it happens in a different place every frame, which for Cyclone,
  2021. since it's a sprite-on-background space game, makes it nearly undetectable.
  2022.  
  2023. If you run your game on a slower machine, you may discover that you get some
  2024. nasty tearing when syncing to the VBL.
  2025.  
  2026. -- 
  2027. | Michael A. Kelly                  High Risk Ventures, Inc |
  2028. | President                                    PO Box 70690 |
  2029. | mkelly@hrvinc.com                        Eugene, OR 97401 |
  2030. | http://www.hrvinc.com                      (415) 359-4176 |
  2031.  
  2032. +++++++++++++++++++++++++++
  2033.  
  2034. >From ctate@world.std.com (Christopher L Tate)
  2035. Date: Fri, 3 May 1996 18:25:16 GMT
  2036. Organization: The World Public Access UNIX, Brookline, MA
  2037.  
  2038. Michael Kelly (highrisk@shellx.best.com) wrote:
  2039. : In article <4md25s$ded@dsk92.itg.ti.com>, Joel Quejada <joel@itg.ti.com> wrote:
  2040. : >I just hear so many people say that syncing to VBL is not necessary,
  2041. : >even some that discourage its use, but I just don't think the smoothness
  2042. : >is acceptable unless I sync to VBL.
  2043.  
  2044. : It depends on your program.  If you're syncing to VBL, and your screen update
  2045. : is slow enough so that the beam catches up with your drawing, you'll still
  2046. : get tearing.  If your screen update is of a very consistent speed, the tearing
  2047. : will be very noticeable because it will always happen around the same place.
  2048.  
  2049. : If you run your game on a slower machine, you may discover that you get some
  2050. : nasty tearing when syncing to the VBL.
  2051.  
  2052. And syncing to VBL can hurt your animation performance.
  2053.  
  2054. Bear in mind that syncing to the VBL means *delaying* drawing until the
  2055. interrupt pings.  Unless you're prepared to take advantage of the time
  2056. between when your program is read to update the scren and the time the VBL
  2057. interrupt hits, that's just wasted time, and will slow your program down.
  2058.  
  2059. If you're double-buffering, or using some other scheme to queue drawing
  2060. while you continue with calculations, then you don't really have to worry
  2061. about the delay, and syncing to VBL won't hurt as much.
  2062.  
  2063. -- 
  2064. Christopher Tate <*> ctate@world.std.com <*> http://world.std.com/~ctate/
  2065.                   "What's in the briefcase?"   "Kosh."
  2066.  
  2067. +++++++++++++++++++++++++++
  2068.  
  2069. >From Dave Howell <dshowell@worldnet.att.net>
  2070. Date: Fri, 03 May 1996 13:27:05 -0700
  2071. Organization: Pablo Media
  2072.  
  2073. Christopher L Tate wrote:
  2074. > Michael Kelly (highrisk@shellx.best.com) wrote:
  2075. > : In article <4md25s$ded@dsk92.itg.ti.com>, Joel Quejada
  2076. > : <joel@itg.ti.com> wrote:
  2077. > : >I just hear so many people say that syncing to VBL is not
  2078. > : >necessary,
  2079. > : >even some that discourage its use, but I just don't think the
  2080. > : >smoothness
  2081. > : >is acceptable unless I sync to VBL.
  2082. > : It depends on your program.  If you're syncing to VBL, and your
  2083. > : screen update
  2084. > : is slow enough so that the beam catches up with your drawing, you'll
  2085. > : still
  2086. > : get tearing.  If your screen update is of a very consistent speed,
  2087. > : the tearing
  2088. > : will be very noticeable because it will always happen around the
  2089. > : same place.
  2090. > : If you run your game on a slower machine, you may discover that you
  2091. > : get some
  2092. > : nasty tearing when syncing to the VBL.
  2093. > And syncing to VBL can hurt your animation performance.
  2094. > Bear in mind that syncing to the VBL means *delaying* drawing until
  2095. > the
  2096. > interrupt pings.  Unless you're prepared to take advantage of the time
  2097. > between when your program is read to update the scren and the time
  2098. > the VBL
  2099. > interrupt hits, that's just wasted time, and will slow your program
  2100. > down.
  2101. > If you're double-buffering, or using some other scheme to queue
  2102. > drawing
  2103. > while you continue with calculations, then you don't really have to
  2104. > worry
  2105. > about the delay, and syncing to VBL won't hurt as much.
  2106.  
  2107. Christopher,
  2108.  
  2109. That's right. If the nature of your game requires synchronizing your 
  2110. screen updates to vertical blanking to avoid tearing, then you have to 
  2111. do it right. You have to buffer rendered frames in offscreen GWorlds. 
  2112. Then your CopyBits (or custom blit) to the screen should take place at 
  2113. interrupt time. This is the approach taken by asynchonous QuickTime 
  2114. codecs, and it works very well but it's not necessarily EASY to 
  2115. implement. It would be a SWEET feature to add to DrawSprockets though, 
  2116. wouldn't it (if it's not in there already)? Anyway, the point is that  
  2117. syncing CORRECTLY to VBL will not hurt your performance. You never want 
  2118. to just WAIT until the next VBL unless your game does not require speed 
  2119. (like Scrabble or Chess).
  2120.  
  2121. One other game development tip that can be gleaned from looking at 
  2122. QuickTime is that a rock-solid frame rate creates much smoother 
  2123. animation than a faster--but not steady--frame rate. In other words, if 
  2124. your game gets a frame rate that varies between 15-18 fps on a given 
  2125. target machine, you should just make it do 15 fps, and it will actually 
  2126. look faster and smoother. To take advantage of this, you need to measure 
  2127. performance at runtime and adapt the frame rate during gameplay.
  2128.  
  2129. Dave
  2130.  ____________________ ___     _   _      ____________________
  2131. |                    | _ \___| |_| | ___|                    |
  2132. |    Dave Howell     |  _/ _ | _ \ |/ _ \     Pablo Media    |
  2133. |____________________|_| \___|___/_|\___/____________________|
  2134.  
  2135. ---------------------------
  2136.  
  2137. >From "Christophe ANDRES" <chrisoft@calva.net>
  2138. Subject: [Q] Clean way to know when a serial port is "stolen"
  2139. Date: 27 Apr 96 16:20:36 +0100
  2140. Organization: CalvaCom Networks
  2141.  
  2142.     I am looking for a clean method to know when a serial port is "stolen"
  2143. from under me.
  2144.  
  2145. To clarify a bit. I have a nice little program (part of a bigger project)
  2146. lurking in the background with a serial port open, gently waiting for a
  2147. modem to tell it something.
  2148. Then come a big evil program who grabs the serial port (closing in by brute
  2149. force and reopen it for its own purposes), uses it and then ultimately
  2150. closes it and quits (lets say a PPP module).
  2151.  
  2152. The result of this scenario is that the background program is stuck, with
  2153. an invalid reference number to the serial port.
  2154.  
  2155. I can think of several "not so" clean methods to be notified of "brute
  2156. force" claiming of a serial port (or any driver), but is there a clean one
  2157. ?
  2158.  
  2159. Yes I know I am followin th lofty quest for serial port arbitration ;)
  2160.  
  2161. Any help would be welcome.
  2162.  
  2163.  
  2164. =======================================================
  2165.    Christophe ANDRES                                   Chrisoft
  2166. 20, rue Prosper Merimee                      (Software development)
  2167. 67100 STRASBOURG. FRANCE
  2168. Tel.: (33) 88 65 99 94                            Fax: (33) 88 65 99 59
  2169. Internet : chrisoft@calva.net
  2170.  
  2171.  
  2172. +++++++++++++++++++++++++++
  2173.  
  2174. >From oster@netcom.com (David Phillip Oster)
  2175. Date: Sun, 28 Apr 1996 08:39:58 GMT
  2176. Organization: IOpener
  2177.  
  2178. In article <ADA7F9D8-14492@194.51.119.116>, "Christophe ANDRES"
  2179. <chrisoft@calva.net> wrote:
  2180.  
  2181. >         I am looking for a clean method to know when a serial port is "stolen"
  2182. > from under me.
  2183.  
  2184. 1.) You can patch the _Open system call (Trap A000) to see if your serial
  2185. port is being opened by someone else. If you patch is in the system heap,
  2186. you'll get called by other programs using open.
  2187.  
  2188. 2.) there is a bit in the flags word in the front of the driver, that
  2189. says whether that driver is open or not.
  2190.  
  2191.  
  2192. My advice: if the serial port is closed, open it , use it for a short time,
  2193. and close it. If it is open, try again later.
  2194. - ------- oster@netcom.com ----------
  2195. "A man hears what he wants to hear and misremembers the rest."
  2196.      -- Paul Simon, ("The Boxer")
  2197.  
  2198. +++++++++++++++++++++++++++
  2199.  
  2200. >From cswan@actrix.gen.nz (Christopher Swan)
  2201. Date: Tue, 30 Apr 1996 07:40:07 +1200
  2202. Organization: Raine Storm Softworks
  2203.  
  2204. >I can think of several "not so" clean methods to be notified of "brute
  2205. >force" claiming of a serial port (or any driver), but is there a clean one
  2206. >?
  2207.  
  2208. The easiest way is to use the ref num and look for a 'driver not open'
  2209. error. Unfourtunately, you can't tell when you're both reading from it.
  2210.  
  2211. -- 
  2212.  
  2213. Cheers, Chris
  2214.  
  2215. - ---------------------------------------------------------------------
  2216. Christopher Swan                                 CompuServe 100354,3427   
  2217. PO Box 11567, Wellington, New Zealand                 or Raine@kagi.com
  2218. - ---------------------------------------------------------------------
  2219.  
  2220. +++++++++++++++++++++++++++
  2221.  
  2222. >From "Christophe ANDRES" <chrisoft@calva.net>
  2223. Date: 30 Apr 96 14:10:56 +0100
  2224. Organization: CalvaCom Networks
  2225.  
  2226.     
  2227. >1.) You can patch the _Open system call (Trap A000) to see if your serial
  2228. >port is being opened by someone else. If you patch is in the system heap,
  2229. >you'll get called by other programs using open.
  2230. >
  2231.  
  2232. That is the method I spoke of, being "not so" clean. I would have prefered
  2233. avoiding any patch :(
  2234.  
  2235.  
  2236.  
  2237. =======================================================
  2238.    Christophe ANDRES                                   Chrisoft
  2239. 20, rue Prosper Merimee                      (Software development)
  2240. 67100 STRASBOURG. FRANCE
  2241. Tel.: (33) 88 65 99 94                            Fax: (33) 88 65 99 59
  2242. Internet : chrisoft@calva.net
  2243.  
  2244.  
  2245. ---------------------------
  2246.  
  2247. End of C.S.M.P. Digest
  2248. **********************
  2249.  
  2250.